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会立即完全刷新。然而,我注意到,有时在调试时,更改会异常缓慢,并且会在输出窗口中显示一大堆绑定错误。只有当我在属性更改之前的任何时候破译代码时,才会发生这种情况。如果我处于调试模式,但在任何时候都没有中断,那么一切正常,没有绑定错误报告
考虑到这一点,这是有意义的,控件绑定到集合中的项,然后更改集合并断开绑定,然后集合引发其集合更改事件,视图成功重新绑定
我想知道的是:
有一次,我认为更改集合实例可能是问题所在,因此我决定改为使用专用集合实例,当需要更改时,我将其清除,然后添加所有新项,同样的问题也发生了。我注意到将绑定错误输出到输出窗口会显著降低WPF的速度,因为我自己也注意到了这一点。如果我不需要它,我就把它关掉。我想你可能是对的,我最初的想法是不要太在意它,但这种心态有时会让我陷入麻烦,所以我想我会调查一下。我将数据绑定跟踪从verbose转到error(我忘了昨天已将其转到verbose),但现在它没有发生。谢谢你的意见。