Как установить DisplayMemberPath для списка списков (во время выполнения)? - PullRequest
0 голосов
/ 15 марта 2012

У меня есть следующие классы (сокращенно для простоты):

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 в качестве источника данных.

Есть личто-то простое, что я здесь упускаю (я предполагаю, что это очень возможно)? (Я искал решение моей проблемы повсеместно (что, надеюсь, действительно просто), но я пока не получил ничего, чтобы работать.)

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Имя ваших внутренних классов - Property2 и Property3,
, поэтому я думаю, что правильное использование для listView1.DisplayMemberPath:

listView1.DisplayMemberPath = "Property2.ColumnName"; 
2 голосов
/ 15 марта 2012

DisplayMemberPath - это просто ярлык. Вы всегда можете использовать более гибкий способ предоставления DataTemplate.

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

<ItemsControl ItemTemplate="{StaticResource myTemplate}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...