我需要执行一个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>
......依此类推(很多因为我的ListView有元素)......
ListView不应该有标题栏,当然一切都会以编程方式完成。
应该如何做? 感谢。
答案 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
,否则绑定将无法始终正常工作。