将ListBox绑定到Dictionary <int,string =“”> </int,>

时间:2011-04-01 16:58:41

标签: silverlight silverlight-4.0 binding listbox

我想将Silverlight ListBox绑定到Dictionary<int, string>。我没有成功尝试以下内容:

someListBox.ItemsSource = someItems;

someListBox.ItemsSource = someItems.Values;

2 个答案:

答案 0 :(得分:7)

假设字典在分配时完全填充,这两种方法都可以正常工作。在您的用户控件中只有这个: -

 <ListBox x:Name="lst" />

然后这段代码: -

        var data = new Dictionary<int, string>();
        data.Add(1, "Hello");
        data.Add(2, "World");

        lst.ItemsSource = data.Values;

将显示两个字符串“Hello”和“World”。

为ListBox提供一个模板: -

    <ListBox x:Name="lst">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" >
                    <TextBlock Text="{Binding Key}" Margin="5" />
                    <TextBlock Text="{Binding Value}" Margin="5" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>            
    </ListBox>

现在您可以自己分配字典: -

    lst.ItemsSource = data;

列表框显示Key值对的集合。

答案 1 :(得分:0)

此问题的解决方案非常简单:在尝试将数据绑定到控件之前,我没有调用InitializeComponent();