WPF,控制。依赖项属性的值堆栈
我遇到了一个很小的问题(乍一看)。 我的情况的简化版本如下所示: 我希望将多个WPF,控制。依赖项属性的值堆栈,wpf,dependency-properties,Wpf,Dependency Properties,我遇到了一个很小的问题(乍一看)。 我的情况的简化版本如下所示: 我希望将多个背景(例如)颜色应用于相同的控件,并且只能清除其中的一些颜色(根据条件)WPF不提供这种功能,我只能为每个DP设置一个值 因此,我想将黄色然后绿色然后红色颜色依次应用于控件对象,然后能够重置红色,这样控件将具有绿色背景(另一方面,重置绿色会留下背景红色)。看起来很简单,你有没有为控件创建过这样的装饰器?我相信DP会在内部使用这种行为,但是没有针对它的公共API 请不要建议使用触发器或任何其他类型的条件DP设置,我真的需
背景
(例如)颜色应用于相同的控件
,并且只能清除其中的一些颜色(根据条件)WPF
不提供这种功能,我只能为每个DP
设置一个值
因此,我想将黄色
然后绿色
然后红色
颜色依次应用于控件
对象,然后能够重置红色
,这样控件将具有绿色
背景(另一方面,重置绿色
会留下背景红色
)。看起来很简单,你有没有为控件创建过这样的装饰器?我相信DP
会在内部使用这种行为,但是没有针对它的公共API
请不要建议使用触发器或任何其他类型的条件
DP
设置,我真的需要为单个DP
设置多个值,并能够管理它们说“不要建议”不是一个好主意。。。不管怎么说,这是不可能的,WPF并没有做到这一点,你的意思可能是这个值,但这是固定的,你不能仅仅在这两者之间添加另一层,这是有充分理由的。整个系统都依赖于此。否则,您无法设置一个值并使用触发器覆盖它,并且不需要重新设置该值。如果人们开始弄乱这个列表,动画、风格继承等也就不可能了
所以你不喜欢触发的想法。。。为什么?正是为了这个。
好的,如果您不喜欢,可以为Background1
、Background2
等添加附加属性。您还可以将Background作为附加属性并使其可继承。您可以进行附加行为、侦听属性更改和修改背景颜色。您可以使用多重绑定或优先级绑定。
如果不需要明显的解决方案,那么很多东西都是可能的:)由于实现细节的原因,我不能使用触发器,这就是为什么我要求不要建议它们:)如何将背景绑定到数据上下文中的数字,使用值转换器将数字转换为预定义的颜色列表,这样转换器就会返回您想要的颜色。这是解决问题的一种方法。颜色的数量不受限制,但我会考虑这样的解决方案,谢谢