WPF绑定开销
我正在学习WPF。我现在谈到装订。当使用INotifyPropertyChanged时,绑定是否依赖于反射?如果是,价格是多少?我正在考虑使用WPF显示通过UDP传输的数据,但我担心与WinForms相比,开销可能太大 绑定的性能取决于被绑定对象的类型。反射不用于INotifyPropertyChanged,而是在解析CLR属性时使用 微软对此有很好的评价: 与绩效相关的关键细节: 如果源对象是CLR对象且源属性是CLR 属性,Windows演示基础(WPF)数据绑定 引擎必须首先在源对象上使用反射。。。这 反射操作的顺序可能非常耗时 从性能的角度来看 解析对象引用的第二种方法涉及CLR 实现INotifyPropertyChanged接口的源对象, 以及作为CLR属性的源属性。在本例中,数据 绑定引擎直接在源类型上使用反射并获取 所需的属性。这仍然不是最佳方法,但它 与第一种方法相比,工作集要求的成本更低 解析对象引用的第三种方法涉及源 对象是DependencyObject,源属性是 从属财产。在这种情况下,数据绑定引擎不会 需要使用反射。相反,属性引擎和数据 绑定引擎一起独立解析属性引用。 这是解析用于数据的对象引用的最佳方法 绑定 WPF允许您将数据绑定到XML内容;但是,数据绑定到 XML内容比数据绑定到CLR对象慢。不转换 如果CLR对象数据仅用于数据绑定,则将其转换为XML (增加强调)这里有一个关于它的例子。这是我经常听到的一个非常常见的问题WPF绑定开销,wpf,binding,Wpf,Binding,我正在学习WPF。我现在谈到装订。当使用INotifyPropertyChanged时,绑定是否依赖于反射?如果是,价格是多少?我正在考虑使用WPF显示通过UDP传输的数据,但我担心与WinForms相比,开销可能太大 绑定的性能取决于被绑定对象的类型。反射不用于INotifyPropertyChanged,而是在解析CLR属性时使用 微软对此有很好的评价: 与绩效相关的关键细节: 如果源对象是CLR对象且源属性是CLR 属性,Windows演示基础(WPF)数据绑定 引擎必须首先在源对象上使用
但我的想法是,除非您遇到严重的边缘情况,否则您希望在WPF中使用绑定。这就是整个系统的设计方式。值得注意的是,只有在您第一次解析绑定的初始PropertyPath时,才会产生这种反射开销。幕后有一个相当复杂的PropertyPathWorker,它以解析的形式缓存绑定表达式,允许它对路径中任何位置的通知更改作出反应,而无需重新反射以获取必要的元数据。