var list = new List<Dictionary<string, string>>{
new Dictionary<string,string>{
{"id","1"},
{"name","foo"},
},
new Dictionary<string,string>{
{"id","2"},
{"name","bar"},
}
};
I want to bind this list to a开发者_开发技巧 listbox. It's quite simple:
listBox.ItemsSource=list;
but the problem is: I can't control what is displayed in the listbox. What I want is to display is dict["name"]. I tried:
listbox.DisplayMemberPath="name"
Sadly it doesn't work.
Your code tries to display a property called name
on the dictionary, which doesn't exist. To access an indexer use the following syntax:
listBox.DisplayMemberPath = "[name]";
Also, you should be probably setting things like this directly in XAML, not in code-behind.
I figured it out:
<ListBox HorizontalAlignment="Left" Margin="8,35,0,77" Width="88" Name="mainListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Path=[name]}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
pay attention to <Label Content="{Binding Path=[name]}" />
, it does all the magic.
hope this help somebody in the future :)
精彩评论