2012-02-17 83 views
0

我有一个轻微的问题,我不知道是真的是一个问题,但在我的愤世嫉俗认为我正在做一些根本错误的事情。更改绑定ObservableCollection实例

我有一个属性是要显示的子模型的一个ObservableCollection视图模型:

public SeatingPlanItemCollection DisplayItems 
    { 
     get 
     { 
      return _displayItems; 
     } 
     private set 
     { 
      SetField(ref _displayItems, value,() => DisplayItems); 
     } 
    } 

这然后通过XAML绑定到ItemControl的财产的ItemSource。从某些命令中,可以在模型中更改此集合,运行代码时一切正常,集合发生更改,ItemsControls可以及时快速完成刷新。但是我注意到,有时在调试时,更改速度会非常慢,并且会在输出窗口中显示一大堆绑定错误。只有在属性更改之前的任何时候我已经打入代码,才会发生这种情况。如果我处于调试模式,但在任何时候都没有中断,那么一切都很好,并且没有报告绑定错误。

考虑到这一点,这是有道理的,控件绑定到集合中的项目,然后集合被更改并打破绑定,集合然后引发它的集合更改事件,并视图重新绑定成功。

我想知道的是:

  1. 为什么只有绑定错误输出后,我已经分成的代码?
  2. 这是否值得担心,因为慢速度只有在闯入显然不会在生产中发生的代码后才显现出来? (虽然我认为在幕后我可能还没有意识到,但我注意到的主要问题是运行时环境将错误发送到输出窗口)。
  3. 如果是问题,应该如何处理更改ItemsControl绑定的集合?

希望已经够清楚了。

在此先感谢。

保罗

编辑

在一个点上我想改变集合的实例可能是这个问题,所以我决定,而不是专门的回收情况,当它需要更换时我清除它然后添加所有新项目,发生同样的问题。

回答

1

我注意到输出绑定到输出窗口的错误显着减慢了WPF出于某种原因,我已经注意到了这一点。我把它关掉如果我不需要它。

+0

我想你可能是对的,我原来的想法不是太在意它,但是这种心态有时会让我陷入困境,所以我想我会去调查。我拒绝了从详细到错误的数据绑定跟踪(我忘记了我已经把它变成了详细的昨天),它现在不会发生。感谢您的输入。 – 2012-02-17 15:10:02

相关问题