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是为父对象设计的,因此它的子对象也可以使用它。