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

时间:2012-03-14 22:24:17

标签: c# wpf wpf-controls

我有以下类(简称为简称):

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",但似乎没有任何效果({{1}如果我将ListView设置为DisplayMemberPathClass2的列表,则显示Class3,但我想保留ListView列表{1}}作为我的 数据源。

这里有什么简单的我想念(我假设这很有可能)? (我已经远远地搜索了我的问题的解决方案(希望非常简单),但我还没有任何工作要做。)

2 个答案:

答案 0 :(得分:2)

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

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

<ItemsControl ItemTemplate="{StaticResource myTemplate}"/>

答案 1 :(得分:2)

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

listView1.DisplayMemberPath = "Property2.ColumnName";