我想将Silverlight ListBox绑定到Dictionary<int, string>
。我没有成功尝试以下内容:
someListBox.ItemsSource = someItems;
和
someListBox.ItemsSource = someItems.Values;
答案 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();
。