用于UI更新的替代INotifyPropertyChanged

时间:2012-04-12 19:00:45

标签: c# user-interface c#-4.0 inotifypropertychanged

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

这是我的理由:

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

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

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

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

2 个答案:

答案 0 :(得分:2)

  

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

好吧,就在你在UI上显示的属性的setter中调用NotifyPropertyChanged("PropertyName")。因为这实际上会强制UI更新每次再次设置属性 - 意味着每个属性每秒数百次。您也可以在方法中调用NotifyPropertyChanged("PropertyName"),每次计时器过去时都会调用它。因此,无需使用RefreshDataSource()代替INotifyPropertyChagend

答案 1 :(得分:1)

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