3

我一直在与这个问题作斗争很长一段时间,我需要一些专家的帮助才能得到我想要的结果。这是通过将源绑定为 lstPerson 并将 DataMember 绑定到 Gender 和 Name 后我的带有 gridviewcolumn 的列表视图的结果。

人物类:

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 或后面的代码来实现这一点?

4

2 回答 2

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>
于 2012-12-07T07:23:02.867 回答
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] = 女性

不是好方法 - 但很简单!

于 2012-12-07T13:53:08.637 回答