在WPF中,如果你想要在UniformGrid内部为每个Model对象放置一个Panel(比如StackPanel或Grid),并且这些Panel是通过数据绑定动态生成的,你需要结合使用ItemsControl、DataTemplate以及UniformGrid。但是,由于UniformGrid不是ItemsControl的直接子类,你需要将UniformGrid作为ItemsPanelTemplate的内容嵌入到ItemsControl中。
public class MyModel  
{  public string Name { get; set; }  // 可能还有其他属性  
}- XAML中的绑定:在你的XAML中,使用ItemsControl并设置其ItemsSource为你的Model集合。然后,通过ItemsPanelTemplate指定使用UniformGrid作为布局,并在ItemTemplate中定义每个Model对象如何显示(即每个Model对象被放置在一个Panel中)。<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>