如何设置列表列表的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
设置为Class2
或Class3
的列表,则会显示ListView
,但我希望保留Class1
的列表作为我的数据源。
这里有没有我遗漏的一些简单的东西(我想这是很可能的)?(我已经到处寻找解决我的问题的方法(希望它真的很简单),但我还没有找到任何方法。)
内部类的名称为Property2和Property3,
所以我认为listView1.DisplayMemberPath的正确用途是:
listView1.DisplayMemberPath = "Property2.ColumnName";
DisplayMemberPath只是一个快捷方式。您总是可以使用更灵活的方式来提供DataTemplate。
<DataTemplate x:Key="myTemplate">
<TextBlock Text="{Binding Property2.ColumnName}"/>
</DataTemplate>
<ItemsControl ItemTemplate="{StaticResource myTemplate}"/>