我一直在与这个问题作斗争很长一段时间,我需要一些专家的帮助才能得到我想要的结果。这是我的gridviewcolumn列表视图通过将源绑定为lstPerson并将其DataMember绑定到Gender和Name的结果。
人员类:
private int ID { get; set; }
private string Gender { get; set; }
private string FName { get; set; }
List<Person> lstPerson = GetPersonInformation();
//select Gender, FirstName From Person Order By Gender
ListView
结果:
John
Mike
Gabriel
Kevin
Peter
Stacy
Jen
Lily
Lisa
Vivian
以上不是我想要展示的内容。如果我想要上述内容,那就很容易做到。下面的结果是我想要实现的......对于这个例子,最多4列,最多3行......每3行,创建一个包含3行的列,直到达到4列。
Male Gabriel Female Lily
John Kevin Stacy Lisa
Mike Peter Jen Vivian
有谁知道如何通过XAML或代码来实现这一目标?
答案 0 :(得分:0)
您可以尝试使用ItemsPanelTemplate
:
<ListView>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Width="200" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Margin="5 0" Text="{Binding FName}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
如果您需要恰好4列,即使名称很长,您也可以使用UniformGrid
代替WrapPanel
:
<ItemsPanelTemplate>
<UniformGrid Columns="4" />
</ItemsPanelTemplate>
答案 1 :(得分:0)
您需要的权利清单 - 这就是全部!
<ListBox x:Name="lbPeoples" ScrollViewer.VerticalalScrollBarVisibility="Disabled" ItemsSource="{Binding Path=Peoples}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
其中:ListBox高度= 3 * Item_Height,ListBox宽度= 4 * Item_Width
人民[0] =男性,人民[6] = Femail
不好的方式 - 但很简单!