Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF绑定开销_Wpf_Binding - Fatal编程技术网

WPF绑定开销

WPF绑定开销,wpf,binding,Wpf,Binding,我正在学习WPF。我现在谈到装订。当使用INotifyPropertyChanged时,绑定是否依赖于反射?如果是,价格是多少?我正在考虑使用WPF显示通过UDP传输的数据,但我担心与WinForms相比,开销可能太大 绑定的性能取决于被绑定对象的类型。反射不用于INotifyPropertyChanged,而是在解析CLR属性时使用 微软对此有很好的评价: 与绩效相关的关键细节: 如果源对象是CLR对象且源属性是CLR 属性,Windows演示基础(WPF)数据绑定 引擎必须首先在源对象上使用

我正在学习WPF。我现在谈到装订。当使用INotifyPropertyChanged时,绑定是否依赖于反射?如果是,价格是多少?我正在考虑使用WPF显示通过UDP传输的数据,但我担心与WinForms相比,开销可能太大

绑定的性能取决于被绑定对象的类型。反射不用于INotifyPropertyChanged,而是在解析CLR属性时使用

微软对此有很好的评价:

与绩效相关的关键细节:

如果源对象是CLR对象且源属性是CLR 属性,Windows演示基础(WPF)数据绑定 引擎必须首先在源对象上使用反射。。。这 反射操作的顺序可能非常耗时 从性能的角度来看

解析对象引用的第二种方法涉及CLR 实现INotifyPropertyChanged接口的源对象, 以及作为CLR属性的源属性。在本例中,数据 绑定引擎直接在源类型上使用反射并获取 所需的属性。这仍然不是最佳方法,但它 与第一种方法相比,工作集要求的成本更低

解析对象引用的第三种方法涉及源 对象是DependencyObject,源属性是 从属财产。在这种情况下,数据绑定引擎不会 需要使用反射。相反,属性引擎和数据 绑定引擎一起独立解析属性引用。 这是解析用于数据的对象引用的最佳方法 绑定

WPF允许您将数据绑定到XML内容;但是,数据绑定到 XML内容比数据绑定到CLR对象慢。不转换 如果CLR对象数据仅用于数据绑定,则将其转换为XML

(增加强调)

这里有一个关于它的例子。这是我经常听到的一个非常常见的问题


但我的想法是,除非您遇到严重的边缘情况,否则您希望在WPF中使用绑定。这就是整个系统的设计方式。

值得注意的是,只有在您第一次解析绑定的初始PropertyPath时,才会产生这种反射开销。幕后有一个相当复杂的PropertyPathWorker,它以解析的形式缓存绑定表达式,允许它对路径中任何位置的通知更改作出反应,而无需重新反射以获取必要的元数据。