C# 如何在XAML中对齐ListView或ItemsControl中的每个n元素
假设我有一个模型C# 如何在XAML中对齐ListView或ItemsControl中的每个n元素,c#,.net,wpf,xaml,data-binding,C#,.net,Wpf,Xaml,Data Binding,假设我有一个模型 public class Person { public string Name { get; set; } } 在我的视图模型中,我有以下列表: ObservableCollection<Person> People; observedcollection人员; 通常,绑定语法如下所示: <ItemsControl ItemsSource="{Binding People}"> <ItemsControl.ItemTempl
public class Person
{
public string Name { get; set; }
}
在我的视图模型中,我有以下列表:
ObservableCollection<Person> People;
observedcollection人员;
通常,绑定语法如下所示:
<ItemsControl ItemsSource="{Binding People}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="{Binding People}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我想要达到的是每排有3个人。
让我们假设人={A,B,C,D,E,F,G}
我想将其显示为:A B C
def
G
实现这一点的正确方法是什么?您可以使用UniformGrid作为ItemsPanel,如下所示:
<ItemsControl ItemsSource="{Binding People}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="{Binding People}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
您可以使用UniformGrid作为项目span如下所示:
<ItemsControl ItemsSource="{Binding People}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="{Binding People}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>