如何将字典列表中的值绑定到ListView?

时间:2016-03-05 04:17:35

标签: c# xaml listview dictionary data-binding

我有一个清单。列表中的每个项目都有一个包含2个键/值的字典项。

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&amp; KEY_2都是常量,其值在不同的文件中确定。

我在网上经历了很多例子,但它们或者看起来太混乱,或者只是绑定到一本词典。任何帮助是极大的赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

要使用可以拥有动态属性名称的对象,可以使用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;
}

答案 1 :(得分:0)

是的,创建一个名为item的类具有属性valueA和值B以及valeAplusValueB这是总和。填充项目列表并使用binired到valueAplusValueB属性的listview项目设置litview的来源