WPF属性和x:Null等

本文关键字:Null 属性 WPF | 更新日期: 2023-09-27 18:05:20

我以WPF为例。假设我们有一个控件X,并将其背景设置为图像。然后我们希望鼠标悬停时没有背景图像。这可以通过x:Null来实现。但是,如果我们不指定x:Null,它将保持相同的图像。

我正在尝试为一个不支持WPF的平台创建一个自定义皮肤引擎。我正在想办法重现这种行为。问题是,如果我有一个类XControlStyle和该类的两个实例,一个用于正常状态,一个用于鼠标悬停,那么如何实现我在wpf中所做的并不明显。

因为设置例如鼠标悬停。backgrounimage = null它不能告诉用户是否将其设置为null或默认为null ..对于值类型,这个问题更严重。设置所有属性两次并不是一个优雅的解决方案。此外,我需要一个解决方案,以使BackgroundImage像它从未设置。我想出了3个解决方案(通过属性,用于存储的字典类,在类包装器中包装属性值),但虽然我实现了最后一个,但我不满意。
阅读MSDN文档受到启发,我认为他们以某种方式将这些数据存储为元数据?所以我想知道元数据是否以某种方式解决了我的问题。任何想法?

WPF属性和x:Null等

这些事情是通过依赖属性值优先级完成的,有一个值查找系统,在找到的值中选择具有最高优先级的值。依赖属性本身就像字典,在不同的层中有几个这样的字典,例如元素本身和样式。这个系统非常复杂,我想说,复制它本身就是一个巨大的工程。