C# .Net';“s不可用”;扩展属性“;相似功能

C# .Net';“s不可用”;扩展属性“;相似功能,c#,.net,wpf,data-binding,treeview,C#,.net,Wpf,Data Binding,Treeview,假设我有一个由“Person”类表示的层次结构。Person类(类型为Person)中的ParentPerson属性启用分层表示,并且可以是任何级别的深度。它不必完全是这样,只要想象一下这种需要,而不管实现如何 层次结构需要显示在treeview控件中。与层次结构无关,但与UI关联,我希望使用诸如IsExpanded(或collapsed)之类的属性来存储必须在显示中展开或折叠的节点。这些属性显然不属于Person类 继承Person类并添加必要的UI相关属性是实现这一点的最佳方法吗?我知道“扩

假设我有一个由“Person”类表示的层次结构。
Person
类(类型为
Person
)中的
ParentPerson
属性启用分层表示,并且可以是任何级别的深度。它不必完全是这样,只要想象一下这种需要,而不管实现如何

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

继承
Person
类并添加必要的UI相关属性是实现这一点的最佳方法吗?我知道“扩展属性”(如扩展方法)在.Net中不可用

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


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

您应该使用架构设计模式,例如(在WPF的情况下)Model–View–ViewModel(MVVM)。有一篇专门针对此场景的优秀文章:。建议创建一个
PersonViewModel
,它包装
Person
对象(包括派生类的实例),只公开与UI相关的属性,以及新的
IsSelected
IsExpanded
属性,这些属性可以被
treevieItem
元素绑定。

完美。非常感谢你。