.Net'不可用"扩展属性"像功能
本文关键字:quot 扩展 属性 功能 Net | 更新日期: 2023-09-27 18:08:36
假设我有一个由"Person"类表示的层次结构。Person
类(类型为Person
)中的ParentPerson
属性允许分层表示,并且可以是任何层次的深度。它不必完全是这样的,但只要想象这种需求,而不考虑实现。
层次结构需要在树视图控件中显示。不与层次结构关联,但与UI关联,我希望使用诸如IsExpanded
(或折叠)之类的属性来存储必须在显示中展开或折叠的节点。这些属性显然不属于Person
类。
继承Person
类并添加必要的UI相关属性是最好的方法吗?我知道"扩展属性"(如扩展方法)在。net中是不可用的。
我不想像这里建议的那样使用扩展方法包装,因为我希望添加的属性在WPF树视图中是可绑定的。
什么是最好的/正确的方法来实现这一点?您应该使用架构设计模式,例如(在WPF的情况下)模型-视图-视图模型(MVVM)。有一篇很好的文章专门针对这个场景:使用ViewModel模式简化WPF树视图。建议创建一个PersonViewModel
来包装您的Person
对象(包括派生类的实例),只暴露与UI相关的属性,以及可以由TreeViewItem
元素绑定的新的IsSelected
和IsExpanded
属性。