首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PropertyDescriptor与WPF结合机制

PropertyDescriptor与WPF结合机制
EN

Stack Overflow用户
提问于 2013-11-05 07:48:05
回答 1查看 3.7K关注 0票数 9

背景

我正在研究一些代码,并遇到了一个包含带有绑定列的DataGrid的xaml:

代码语言:javascript
复制
Binding="{Binding calc_from}" ....

我到处搜索,但是没有一个类包含一个名为calc_from的属性。然后我偶然发现了一些PropertyDescriptor类。我想,这就是他们如何使绑定工作,但没有完全理解如何。

问题

PropertyDescriptor是什么?它有什么好处?我什么时候要实现我自己的CustomTypeDescriptor?它与WPF结合机制有何关系?

我在this线程中遇到了一个例子,但是如果有人能给我一些启示,我会很高兴的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-05 09:09:21

PropertyDescriptor是什么?它有什么好处?

PropertyDescriptor是一个抽象类,提供了很少的方法和属性,这些方法和属性主要用于绑定类内部。例如,WPF具有那些“普通”属性和依赖项属性,绑定也使用PropertyDescriptor作为普通属性,DependencyPropertyDescriptor从PropertyDescriptor继承并重写其抽象方法,如SetValue、GetValue、ResetValue..etc。此外,如果实际属性的所有者类已经实现,那么这些PropertyDescriptors提供了一种机制来侦听PropertyChanged事件。总之,当我们讨论WPF中的绑定时,在模型类的一端是PropertyDescriptor,在另一边提供了所需的属性。

我什么时候要实现我自己的描述符?

我现在能想到的唯一例子是,无论出于什么原因,当您无法在实体类中实现INotifyPropertyChanged时,您必须执行某种轮询来询问或更改属性,然后您将编写您自己的PropertyDescriptor,对一个属性执行某种轮询,每1/100次请求它的值。如果您告诉绑定使用您的自定义PropertyDescritor,您最终将有一个"PollingBinding“类。

另一个例子是"DelayBinding“,一些人在互联网上写到,它有一个自定义的PropertyDescriptor,结合绑定计算您希望在一个属性上设置值的频率,如果您试图在1/100秒钟内设置1000次值,那么这个东西将允许您这样做,尽管每隔10次就这样做一次,因此它会给您提供一个很小的延迟。

您发布的链接中的示例是另一个很好的例子。在这个问题中,这个家伙希望有自己的自定义类型描述符,管理自己的自定义更改通知。这就是PropertyDescriptor派上用场的地方。

PropertyDescriptor通常用于绑定。那东西本身就是个废物。:)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19784028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档