我正在尝试使用ListBox
显示数据。我正在设置DataContext
。
public class DataStore
{
static ObservableCollection<ItemToTrack> _items =
new ObservableCollection<ItemToTrack>();
public static ObservableCollection<ItemToTrack> Items
{
get { return _items; }
}
}
xaml:
<ListBox x:Name="ItemList">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Padding="5,0,5,0" Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
设置DataContext的方法:
private void FillBtn_Click(object sender, RoutedEventArgs e)
{
DataStore.Items.Add(new ItemToTrack() { Name = "Gold palate", Locations =
new Dictionary<string, double>()
{
{ "DB City", 101 }, { "Agrawal Jwellers", 110 }
}});
DataStore.Items.Add(new ItemToTrack() { Name = "Crockery set", Locations =
new Dictionary<string, double>()
{
{ "DB City", 200 }, { "New market", 210 }
}});
ItemList.DataContext = DataStore.Items.ToList();
}
除了ListBox
中没有任何内容出现外,不会产生任何错误。
如果我在c#代码中将DataContext更改为ItemsSource,则数据会正确显示。
答案 0 :(得分:1)
您需要在XAML或代码后面设置ItemsSource
的{{1}}属性,而不是ListBox
- 这只用于绑定到ListBox上的任何属性,不是任何一个孩子。
答案 1 :(得分:0)
当您设置ItemsSource
的值时,控件将在内部生成模板化项目。
设置DataContext on an ItemsControl
将无法实现此目的。
Click here查看有关DataContext
和ItemsSource
的正确解释。