2016-03-05 55 views
0

我有一個列表。列表中的每個項目都有一個帶有2個鍵/值的字典項目。如何將字典列表中的值綁定到ListView?

public List<Dictionary<string, object>> listOfDictionaries; 
public Dictionary<string, object> aDict; 

public void AddToList() 
{ 
    aDict = new Dictionary<string, object>(); 
    aDict[KEY_1] = "Value 1"; 
    aDict[KEY_2] = "Value 2"; 
    listOfDictionaries.add(aDict); 

    aDict = new Dictionary<string, object>(); 
    aDict[KEY_1] = "Value 3"; 
    aDict[KEY_2] = "Value 4"; 
    listOfDictionaries.add(aDict); 

    MyListView.ItemSource = listOfDictionaries; 
} 

現在我想將我的字典項綁定到XAML中的ListView中。

<ListView Name:"MyListView" /> 

但是,這樣做只會在MyListView中顯示單詞'Collection'。我希望MyListView顯示我所有字典中的所有值。例如:

First row: 
Value 1 + Value 2 

Second row: 
Value 3 + Value 4 

等等。順便說一句,KEY_1 & KEY_2都是常數,其值在不同的文件中確定。

我已經在線瀏覽了很多例子,但它們看起來太混亂了,或者它們只是綁定到一本字典中。任何幫助是極大的讚賞。謝謝!

+0

你可以達到相同的事情更容易使用類的列表 – Sakura

回答

0

是的,創建一個名爲item的類具有屬性valueA和值B和valeAplusValueB這是總和。填充項目列表並設置您的列表視圖的來源綁定到valueAplusValueB屬性

0

要使用可具有動態屬性名稱的對象,ExpandoObjectdynamic是要走的路。

List<dynamic> list = new List<dynamic>(); 

public void AddToList() 
{ 
    dynamic d1 = new ExpandoObject(); 
    ((IDictionary<string, object>)d1)[KEY_1] = "Value 1"; 
    ((IDictionary<string, object>)d1)[KEY_2] = "Value 2"; 
    list.Add(d1); 

    dynamic d2 = new ExpandoObject(); 
    ((IDictionary<string, object>)d2)[KEY_1] = "Value 3"; 
    ((IDictionary<string, object>)d2)[KEY_2] = "Value 4"; 
    list.Add(d2); 

    MyListView.ItemSource = listOfDictionaries; 
} 
+0

嗨,我已經試過這個,它確實工作。不過,我似乎無法將KEY_1和KEY_2設置爲其他地方定義的常量。 – Moo33

+0

@ Moo33你的意思是類屬性名稱應該從KEY_1改變爲該常量的值是什麼? – Domysee

+0

是的。一種方法,我可以獲得與某個關鍵名稱相關聯的值,而該關鍵名稱在其他地方是常量。 – Moo33

相關問題