GridViewCell

时间:2016-04-22 16:20:25

标签: c# wpf gridview

是否有教程或其他解释,如何在GridView Cell / DataTemplate的单个单元格中显示数据列表(例如图像列表)?

ListView / GridView的源数据是这样的:

class Item
{
  public string Name { get; set; }
  public int Age { get; set; }

  public string Mail { get; set; }

  public List<ItemImages> Images { get; set; }
}

class ItemImages
{
  public string Name { get; set; }
}

正如您所看到的,应该在单元格内显示的其中一个成员本身就是一个列表。如果它是图像,字符串或其他内容的列表并不重要。

林&#39;只是寻找如何在单元格中显示任何类型的列表的起点。

1 个答案:

答案 0 :(得分:1)

这很简单。您应该填充项目控件,例如ComboBox。让我举个例子:

XAML:

<ListView Margin="10" Name="listView">
   <ListView.View>
       <GridView>
           <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
           <GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
           <GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
           <GridViewColumn Header="Images">
              <GridViewColumn.CellTemplate>
                <DataTemplate>
                   <ComboBox ItemsSource="{Binding Images}" DisplayMemberPath="Name"/>
                </DataTemplate>
              </GridViewColumn.CellTemplate>
          </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

代码背后:

public partial class FooBarSample : Window
{
   public FooBarSample()
   {
       InitializeComponent();
       PopulateCollection()
   }
}

private void PopulateCollection()
{
   ObservableCollection<Item> items = new ObservableCollection<Item>();
   items.Add(new Item() { Name = "Jack London", Age = 42, Mail = "jackLondon@london-family.com", Images = new List<ItemImages>()
   {
      new ItemImages() {Name="1" }, new ItemImages() {Name="2" }, new ItemImages() {Name="3" },
   } });
   listView.ItemsSource = items;

}