首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Freezable ---探索Freezable承载数据的原理

Freezable 类为何能够中转数据,DependencyObject 不行? 那么本篇文章就来探索一下 Freezable实现了上述功能的原理是什么?...首先,准备自定义 Freezable 类: public class CustomFreezable : Freezable { public static readonly DependencyProperty...原因就是 FindResource 方法中,如果要查询的资源是Freezable类型的,则会将当前资源的 DataContent的 Visual 绑定到 InheritanceContext,所以Freezable...Freezable 类为何能够中转数据,DependencyObject 不行?...类型的才可以,我猜测这可能跟这个类的定义有关系,Freezable 类为 WPF 中的对象提供了不可变性和性能优化的功能,同时也为动画、资源共享和跨线程安全性等方面提供了便利。

13310
您找到你想要的搜索结果了吗?
是的
没有找到

WPF 中那些可跨线程访问的 DispatcherObject(WPF Free Threaded Dispatcher Object)

Freezable Freezable 是继承自 DispatcherObject 的一个抽象类,其出现的主要目的就是解决 WPF 单线程模型带来的负面性能影响。...Freezable 主要由那些与图形渲染强相关的 WPF 类型继承,比如 Brush、Transform、Geometry、D3DImage 还有各种动画等。典型的,这些类型都对高性能渲染有要求。...你可以对 Freezable 对象调用 Freeze() 方法,调用之后,其 Dispatcher 属性会被设为 null,于是对象可以跨线程访问。...这点跟 Freezable 是不一样的,Freezable 是需要自己主动编写 XAML 或 C# 代码进行 Freeze 的。...因为切换关联 Dispatcher 的方法都是 internal 的 不过我们可以使用反射来间接实现这个效果(当然,你需要自行承担线程安全后果,以及切换不完全造成的跨线程访问问题) ---- 参考资料 Freezable

95120

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券