使用GridViewColumn创建ListView

时间:2012-12-07 00:14:53

标签: c# wpf listview

我一直在与这个问题作斗争很长一段时间,我需要一些专家的帮助才能得到我想要的结果。这是我的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或代码来实现这一目标?

2 个答案:

答案 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

不好的方式 - 但很简单!