在WPF中,如果你想要在UniformGrid
内部为每个Model
对象放置一个Panel
(比如StackPanel
或Grid
),并且这些Panel
是通过数据绑定动态生成的,你需要结合使用ItemsControl
、DataTemplate
以及UniformGrid
。但是,由于UniformGrid
不是ItemsControl
的直接子类,你需要将UniformGrid
作为ItemsPanelTemplate
的内容嵌入到ItemsControl
中。
cs
public class MyModel
{
public string Name { get; set; }
// 可能还有其他属性
}
-
XAML中的绑定 :在你的XAML中,使用
ItemsControl
并设置其ItemsSource
为你的Model集合。然后,通过ItemsPanelTemplate
指定使用UniformGrid
作为布局,并在ItemTemplate
中定义每个Model
对象如何显示(即每个Model
对象被放置在一个Panel
中)。cs<Window x:Class="YourNamespace.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <ItemsControl ItemsSource="{Binding Models}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Rows="2" Columns="2" /> <!-- 根据需要设置行数和列数 --> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Margin="5"> <!-- 使用StackPanel作为每个Model的容器 --> <TextBlock Text="{Binding Name}" /> <!-- 根据需要添加其他控件 --> </StackPanel> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </Grid> </Window>