C# 更改绑定的ObservableCollection实例

C# 更改绑定的ObservableCollection实例,c#,wpf,data-binding,mvvm,observablecollection,C#,Wpf,Data Binding,Mvvm,Observablecollection,我有一个小问题,我不确定这是否真的是个问题,但我内心的愤世嫉俗者认为我做了一些根本错误的事情 我有一个视图模型,其属性是要显示的子模型的可观察集合: public SeatingPlanItemCollection DisplayItems { get { return _displayItems; } private set { SetField(

我有一个小问题,我不确定这是否真的是个问题,但我内心的愤世嫉俗者认为我做了一些根本错误的事情

我有一个视图模型,其属性是要显示的子模型的可观察集合:

    public SeatingPlanItemCollection DisplayItems
    {
        get 
        {
            return _displayItems; 
        }
        private set
        {
            SetField(ref _displayItems, value, () => DisplayItems);
        }
    }
然后通过XAML将其绑定到ItemControl的ItemSource属性。通过某些命令,可以在模型中更改此集合,当运行代码时,一切正常,集合会更改,ItemsControl会立即完全刷新。然而,我注意到,有时在调试时,更改会异常缓慢,并且会在输出窗口中显示一大堆绑定错误。只有当我在属性更改之前的任何时候破译代码时,才会发生这种情况。如果我处于调试模式,但在任何时候都没有中断,那么一切正常,没有绑定错误报告

考虑到这一点,这是有意义的,控件绑定到集合中的项,然后更改集合并断开绑定,然后集合引发其集合更改事件,视图成功重新绑定

我想知道的是:

  • 为什么绑定错误只在我破解代码后才输出
  • 这是一个值得担心的问题,因为缓慢只是在破译代码之后才显得明显,而这显然不会发生在生产中?(虽然我假设在幕后仍然会有一个我不知道的小性能问题,但我注意到的主要问题是运行时环境将错误发送到输出窗口)
  • 如果有问题,我应该如何处理更改ItemsControl绑定到的集合
  • 希望这已经足够清楚了

    提前谢谢

    保罗

    编辑


    有一次,我认为更改集合实例可能是问题所在,因此我决定改为使用专用集合实例,当需要更改时,我将其清除,然后添加所有新项,同样的问题也发生了。

    我注意到将绑定错误输出到输出窗口会显著降低WPF的速度,因为我自己也注意到了这一点。如果我不需要它,我就把它关掉。

    我想你可能是对的,我最初的想法是不要太在意它,但这种心态有时会让我陷入麻烦,所以我想我会调查一下。我将数据绑定跟踪从verbose转到error(我忘了昨天已将其转到verbose),但现在它没有发生。谢谢你的意见。