我正在尝试创建一个系统,在每次更改某个业务对象的属性时,用户界面都不会更新,而只是以受控方式更新。
这是我的理由:
业务对象每秒更新数百次,但在我看来,用户实际上只需要每250毫秒看一次更新。我正在考虑让计时器每250毫秒过一次,并且每次过去都会调用一个告诉UI需要刷新自己的方法。
用户界面相当大,我想做到这一点,以便自己刷新的唯一控件是当前用户正在查看的控件。
我知道INotifyPropertyChanged
模型但不会在每次更新任何内容时不必要地更新UI吗?
我尝试使用.RefreshDataSource()
,但我想知道是否有更好的方法?
答案 0 :(得分:2)
我知道INotifyPropertyChanged模型但不会在每次更新任何内容时不必要地更新UI吗?
好吧,就在你在UI上显示的属性的setter中调用NotifyPropertyChanged("PropertyName")
。因为这实际上会强制UI更新每次再次设置属性 - 意味着每个属性每秒数百次。您也可以在方法中调用NotifyPropertyChanged("PropertyName")
,每次计时器过去时都会调用它。因此,无需使用RefreshDataSource()
代替INotifyPropertyChagend
。
答案 1 :(得分:1)
您可以选择何时调用NotifyPropertyChange - 为什么不通过抑制频繁调用来创建实现INotifyPropertyChanged的基类?