.net - 扩展器作为 ListView 项目

标签 .net wpf listview expander

我需要做一个 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>

My 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/

相关文章:

c# - 如何在C#中截取滚动窗口的屏幕截图

c# - HttpWebRequest 将凭据传递给下一个 HttpWebRequest

c# - .Net HashSet 唯一性计算是否完全基于Hash Codes?

c# - 序列化:如何为 .NET 中的每个元素获取唯一名称?

c# - 我应该使用什么 WPF 图像类型来执行多个转换

android - 使第一个 ListView 项目出现在不同的布局中

c# - 将 IQueryable 的结果转换为字符串以显示在文本框中

c# - 如何清除wpf中 Canvas 的内容?

java - 如何在ListView Activity中实现自定义适配器

android - 如何向 PagerView 添加不同的 Activity ?