C# ListBox不使用DataContext
我正在尝试使用C# ListBox不使用DataContext,c#,silverlight,listbox,C#,Silverlight,Listbox,我正在尝试使用列表框显示数据。我正在设置DataContext public class DataStore { static ObservableCollection<ItemToTrack> _items = new ObservableCollection<ItemToTrack>(); public static ObservableCollection<ItemToTrack> Items {
列表框
显示数据。我正在设置DataContext
public class DataStore
{
static ObservableCollection<ItemToTrack> _items =
new ObservableCollection<ItemToTrack>();
public static ObservableCollection<ItemToTrack> Items
{
get { return _items; }
}
}
公共类数据存储
{
静态可观察收集项目=
新的可观察集合();
公共静态可观测集合项
{
获取{return\u 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();
}
private void FillBtn\u单击(对象发送方,路由目标)
{
DataStore.Items.Add(newitemtotrack(){Name=“Gold”),位置=
新字典()
{
{“DB城市”,101},{“Agrawal Jwellers”,110}
}});
DataStore.Items.Add(newitemtotrack(){Name=“陶器集”,位置=
新字典()
{
{“DB城市”,200},{“新市场”,210}
}});
ItemList.DataContext=DataStore.Items.ToList();
}
除了在列表框中没有显示任何内容外,不会生成任何错误。
如果我将DataContext更改为c#代码中的ItemsSource,数据将正确显示。您需要在XAML或代码隐藏中设置列表框的ItemsSource
属性,而不是DataContext
——它将仅用于绑定列表框上的任何属性,而不是它的任何子项 设置itemsource
的值时,控件将在内部生成模板化的项。
在ItemsControl上设置DataContext将无法实现此目的
查看有关DataContext
和ItemsSource
的详细说明 但DataContext是为父对象设计的,因此它的子对象也可以使用它。