Deb*_*eep 0 wpf wpftoolkit wpf-controls wpfdatagrid wpf-4.0
如果我有一个模型,它几乎是一个只读集合并在网格上显示,用户在其中选择一行。
我是否需要始终在模型上实现 INotifyPropertyChanged?实施与不实施是否有性能优势?
我想知道性能是否会受到 UI 尝试使用类似的东西的影响
var x = Model as INotifyPropertyChanged;
否则它不会使用它。
如果您在任何数据绑定中使用该模型,那么是的,INotifyPropertyChanged即使它是完全不可变的,您也应该实现。原因与性能无关,而是为了避免内存泄漏。
ABinding将始终尝试注册更改通知,如果您不实现INotifyPropertyChanged或公开表单的离散更改事件[Property]Changed,它将通过PropertyDescriptorAPI 进行注册。默认的、基于反射的PropertyDescriptor实现使用全局订阅表,如果由于某种原因Binding没有彻底取消订阅,您的视图模型将无限期地保持活动状态。这与绑定订阅INotifyPropertyChanged通知时使用的弱事件模式形成对比。运行时绑定通常会自行清理,但 Xaml 设计器因在这些情况下泄漏而臭名昭著,这会导致设计器进程的内存消耗在您工作时稳步上升。
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |