开发者

WPF binding List<Dictionary<string,string>> to a ListBox

开发者 https://www.devze.com 2023-03-10 04:10 出处:网络
var list = new List<Dictionary<string, string>>{ new Dictionary<string,string>{ {\"id\",\"1\"},
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 :)

0

精彩评论

暂无评论...
验证码 换一张
取 消