2012-03-14 67 views
0

我有下面的類(簡稱爲簡單起見):如何爲列表列表(在運行時)設置DisplayMemberPath?

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顯示空白的項目。如果我設置DisplayMemberPathClass2Class3,該列表ListView顯示器,但我想保持的Class1列表作爲我的 數據源。

有什麼簡單的,我在這裏失蹤(我假設這是非常有可能)?(我已經搜查遠廣泛用於解決我的問題(wh ICH是希望非常簡單),但我還沒有得到什麼工作還沒有。)

+1

你試過用'Property2.ColumnName'和' Property3.ColumnName'? – Steve 2012-03-14 22:33:05

+0

@Steve:就是這樣!這當然可以解釋爲什麼「財產未找到」的錯誤不斷出現,所以應該讓我自己放棄。如果你讓這個答案,我肯定會接受。 – 2012-03-15 03:37:17

回答

2

內部類的名字是Property2和Property3,
所以我認爲,listView1.DisplayMemberPath正確的使用方法是:

listView1.DisplayMemberPath = "Property2.ColumnName"; 
2

的DisplayMemberPath僅僅是一個捷徑。 您始終可以使用更靈活的方式提供DataTemplate。

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

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

感謝您的回答。沿着學習WPF背後的所有XAML的路線是我暫時想要避免的,並且可能會避免這個問題的需要,但是我想如果我繼續這樣做,最終我會最終走向這條路。 – 2012-03-15 03:40:11

+0

+1:兩週後,這是我最終使用的方法。再次感謝您的回答。 – 2012-03-28 16:38:45