【问题标题】:Expander as ListView Item扩展器作为 ListView 项
【发布时间】:2012-05-07 16:08:59
【问题描述】:

我需要做一个有单列的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 不应该有标题栏,当然一切都会以编程方式完成。

应该怎么做? 谢谢。

【问题讨论】:

    标签: .net wpf listview expander


    【解决方案1】:

    只需为您的 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 属性的类型,它应该是字符串类型。

    哦,你的类应该实现INotifyPropertyChanged,否则绑定不会总是正常工作。

    【讨论】:

    • ItemSource 不是 ListView 属性。 “YourSource”是指 MyItemT 的 MyList 吗?
    • @gliderkite:这就是我在编辑器中编码的结果。它应该是ItemsSource(再加一个's')。是的,那将是您的类型列表。
    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    相关资源
    最近更新 更多