【问题标题】:ListBox not working with DataContext列表框不与 DataContext 一起使用
【发布时间】:2014-08-13 16:43:09
【问题描述】:

我正在尝试使用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,则数据显示正确。

【问题讨论】:

    标签: c# silverlight listbox


    【解决方案1】:

    您需要在 XAML 或后面的代码中设置 ListBoxItemsSource 属性,而不是 DataContext - 它仅用于绑定到 ListBox 上的任何属性,而不是它的任何子项。

    【讨论】:

    • 但是 DataContext 是为 Parent 设计的,所以它的孩子也可以使用它。
    【解决方案2】:

    当您设置ItemsSource 的值时,控件将在内部生成模板项。 设置DataContext on an ItemsControl 不会实现这一点。

    Click here 查看关于DataContextItemsSource 的详细解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      • 2023-03-19
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 2013-10-13
      相关资源
      最近更新 更多