我需要做一个 ListView有一个列,其中该列是 Expander .
特别是我有一个这样的类(class):
public class MyItemT
{
public string Title { get; set; }
public TextBlock Info { get; set; }
}
以及这些对象的列表:
List<MyItemT> Mylist = new List<MyItemT>();
我需要用 Expander 对象填充 ListView,其中 Header 与 Title 绑定(bind),Content 与 Info 属性绑定(bind)。
例如 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>
... and so on (many as there are elements of my ListView) ...
ListView 不应该有标题栏,当然一切都将以编程方式完成。
应该怎么做? 谢谢。
最佳答案
只需为 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>
绑定(bind)也可以通过这样的代码完成。
List<MyItemT> Mylist = new List<MyItemT>();
listView.ItemsSource = Mylist;
您需要更改的一件事是 Info 属性的类型,它应该是字符串类型。
哦,你的类应该实现 INotifyPropertyChanged
,否则绑定(bind)将无法始终正常工作。
关于.net - 扩展器作为 ListView 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10485369/