.Net'不可用"扩展属性"像功能

本文关键字:quot 扩展 属性 功能 Net | 更新日期: 2023-09-27 18:08:36

假设我有一个由"Person"类表示的层次结构。Person类(类型为Person)中的ParentPerson属性允许分层表示,并且可以是任何层次的深度。它不必完全是这样的,但只要想象这种需求,而不考虑实现。

层次结构需要在树视图控件中显示。不与层次结构关联,但与UI关联,我希望使用诸如IsExpanded(或折叠)之类的属性来存储必须在显示中展开或折叠的节点。这些属性显然不属于Person类。

继承Person类并添加必要的UI相关属性是最好的方法吗?我知道"扩展属性"(如扩展方法)在。net中是不可用的。

我不想像这里建议的那样使用扩展方法包装,因为我希望添加的属性在WPF树视图中是可绑定的。

什么是最好的/正确的方法来实现这一点?

.Net'不可用"扩展属性"像功能

您应该使用架构设计模式,例如(在WPF的情况下)模型-视图-视图模型(MVVM)。有一篇很好的文章专门针对这个场景:使用ViewModel模式简化WPF树视图。建议创建一个PersonViewModel来包装您的Person对象(包括派生类的实例),只暴露与UI相关的属性,以及可以由TreeViewItem元素绑定的新的IsSelectedIsExpanded属性。