扩展为ListView项目

时间:2012-05-07 16:09:00

标签: .net wpf listview expander

我需要执行一个ListView,其中包含一列,其中此列为Expander

特别是我有一个这样的课程:

public class MyItemT
{
    public string Title { get; set; }
    public TextBlock Info { get; set; }
}

以及这些对象的列表:

List<MyItemT> Mylist = new List<MyItemT>();

我需要使用Expander对象填充ListView,其中Header与Title绑定,Content包含Info属性。

例如,Expander的ListView如下:

<Expander Header="My Expander">
   <TextBlock TextWrapping="Wrap">
      Lorem ipsum dolor sit amet, consectetur
      adipisicing elit, sed do eiusmod tempor incididunt ut
      labore et dolore magna aliqua
   </TextBlock>
</Expander>

My Expander

  

......依此类推(很多因为我的ListView有元素)......

ListView不应该有标题栏,当然一切都会以编程方式完成。

应该如何做? 感谢。

1 个答案:

答案 0 :(得分:2)

只需为ListView定义一个ItemTemplate并在其中放置一个Expander。这至少适用于ListView中的其他控件,所以它也可以在这里工作。

<ListView ItemsSource="{Binding YourSource}" Name="listView">
  <ListView.ItemTemplate>
    <DataTemplate>
      <Expander Header="{Binding Title}">
        <TextBlock TextWrapping="Wrap" Text="{Binding Info}" />
      </Expander>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

绑定也可以通过这样的代码完成。

List<MyItemT> Mylist = new List<MyItemT>();
listView.ItemsSource = Mylist;

您需要更改的一件事是Info属性的类型,它应该是string类型。

哦,你的班级应该实施INotifyPropertyChanged,否则绑定将无法始终正常工作。