【问题标题】:Error: Items collection must be empty before using ItemsSource in Listbox错误:在列表框中使用 ItemsSource 之前,项目集合必须为空
【发布时间】:2016-01-04 00:48:38
【问题描述】:

我在这里查看了与此类似的问题,但找不到适合我的错误的问题(有效)。我的代码是:

public MainWindow()
    {
        InitializeComponent();
    }

    public List<item> loadedCategory = new List<item>();

    private void Open_Click(object sender, RoutedEventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        if (openFileDialog.ShowDialog() == true)
        {
            List<item> loadedCategory = loaders.category_loader(openFileDialog.FileName);
        }

        left_panel_lower_list.ItemsSource = loadedCategory;
    }

item 对象只是一个包含 4 个属性的 DTO。 loaders.category_loader 返回 listitems。错误标记在ItemSource 分配行的末尾。我尝试将赋值行移动到代码中的大多数其他位置,但它永远不会运行。
我做错了什么?

【问题讨论】:

    标签: c# wpf xaml data-binding listbox


    【解决方案1】:

    我会这样做:

    private ObservableCollection<item> loadedCategory = new ObservableCollection<item>();
    
    public MainWindow()
    {
        InitializeComponent();
        left_panel_lower_list.ItemsSource = loadedCategory;
    }
    
    private void Open_Click(object sender, RoutedEventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        if (openFileDialog.ShowDialog() == true)
        {
            foreach(var item in loaders.category_loader(openFileDialog.FileName)
            {
                loadedCategory.Add(item);
            }
        }        
    }
    

    ...只要基于您的代码。您应该准备一个视图模型并使用绑定。

    【讨论】:

      【解决方案2】:

      您在重新定义与类中的字段同名的局部变量时,上面的代码存在范围错误。实际上,您正在获取数据,然后通过添加似乎为空的字段来忽略它,这就是我认为的问题。

      【讨论】:

        【解决方案3】:

        你应该仔细理解错误信息的含义。

        错误:在使用 ItemsSource 之前,Items 集合必须为空 列表框

        这意味着您的 ListBox 在将某些内容分配给 ItemsSource 之前不得包含任何项目。

        重现此问题的步骤:

        1. 使用组合框并直接在 XAML 代码中添加一些项目。
        2. 然后在代码隐藏中设置它的 itemssource 属性。
        3. 你会得到这个异常。

        如何避免这个错误:

        使用 Items Collection 或 ItemsSource,但不能同时使用。

        【讨论】:

          猜你喜欢
          • 2012-03-04
          • 2013-08-08
          • 1970-01-01
          • 1970-01-01
          • 2012-07-24
          • 2010-10-15
          • 1970-01-01
          • 2012-08-02
          • 2014-01-07
          相关资源
          最近更新 更多