如何设置列表列表的DisplayMemberPath(在运行时)

本文关键字:列表 DisplayMemberPath 运行时 何设置 设置 | 更新日期: 2023-09-27 18:27:54

我有以下类(为了简单起见缩写):

namespace Test
{
    class Class1
    {
        Class2 Property2 { get; set; }
        Class3 Property3 { get; set; }
    }
    class Class2
    {
        string ColumnName { get; set; }
    }
    class Class3
    {
        string ColumnName { get; set; }
        bool IsRequired { get; set; }
    }
}

我实例化一个Class1列表并填充它,然后将ListView的数据绑定设置为我的列表,如下所示。

List<Class1> pList = ...;
listView1.ItemsSource = pList;

我尝试将listView1.DisplayMemberPath设置为等于"ColumnName""Class2.ColumnName""Class3.ColumnName""Test.Class2.ColumnName",但似乎什么都不起作用(ListView显示空白项。如果我将DisplayMemberPath设置为Class2Class3的列表,则会显示ListView,但我希望保留Class1的列表作为我的数据源。

这里有没有我遗漏的一些简单的东西(我想这是很可能的)?(我已经到处寻找解决我的问题的方法(希望它真的很简单),但我还没有找到任何方法。)

如何设置列表列表的DisplayMemberPath(在运行时)

内部类的名称为Property2和Property3,
所以我认为listView1.DisplayMemberPath的正确用途是:

listView1.DisplayMemberPath = "Property2.ColumnName"; 

DisplayMemberPath只是一个快捷方式。您总是可以使用更灵活的方式来提供DataTemplate。

<DataTemplate x:Key="myTemplate">
    <TextBlock Text="{Binding Property2.ColumnName}"/>
</DataTemplate>
<ItemsControl ItemTemplate="{StaticResource myTemplate}"/>