0

我正在尝试创建一个系统,其中每次更改我的一个业务对象的属性时都不会更新用户界面,而是仅以受控方式更新。

这是我的推理:

  1. 业务对象每秒更新数百次,但在我看来,用户实际上只需要每 250 毫秒左右查看一次更新。我正在考虑有一个计时器,它每 250 毫秒过去一次,并且每次它过去调用一个方法,该方法会告诉 UI 它需要刷新自己。

  2. UI 相当大,我想这样做,以便刷新自己的唯一控件将是用户当前正在查看的控件。

我知道该INotifyPropertyChanged模型,但是每次更新任何内容时,这不会不必要地更新 UI 吗?

我尝试使用.RefreshDataSource(),但我想知道是否有更好的方法?

4

2 回答 2

2

我知道 INotifyPropertyChanged 模型,但这不会在每次更新任何内容时都不必要地更新 UI 吗?

好吧,只要你调用NotifyPropertyChanged("PropertyName")属性的设置器,它就会显示在 UI 上。因为这实际上会在每次再次设置属性时强制 UI 更新- 意味着每个属性每秒数百次。您还可以调用NotifyPropertyChanged("PropertyName")该方法,该方法会在您的计时器每次经过时调用。所以没有必要使用RefreshDataSource()代替INotifyPropertyChagend

于 2012-04-12T19:08:35.670 回答
1

您可以选择何时调用 NotifyPropertyChange - 为什么不通过抑制频繁调用来创建实现 INotifyPropertyChanged 的​​基类?

于 2012-04-12T20:21:31.177 回答