WPF,控制。依赖项属性的值堆栈

WPF,控制。依赖项属性的值堆栈,wpf,dependency-properties,Wpf,Dependency Properties,我遇到了一个很小的问题(乍一看)。 我的情况的简化版本如下所示: 我希望将多个背景(例如)颜色应用于相同的控件,并且只能清除其中的一些颜色(根据条件)WPF不提供这种功能,我只能为每个DP设置一个值 因此,我想将黄色然后绿色然后红色颜色依次应用于控件对象,然后能够重置红色,这样控件将具有绿色背景(另一方面,重置绿色会留下背景红色)。看起来很简单,你有没有为控件创建过这样的装饰器?我相信DP会在内部使用这种行为,但是没有针对它的公共API 请不要建议使用触发器或任何其他类型的条件DP设置,我真的需

我遇到了一个很小的问题(乍一看)。 我的情况的简化版本如下所示:

我希望将多个
背景
(例如)颜色应用于相同的
控件
,并且只能清除其中的一些颜色(根据条件)
WPF
不提供这种功能,我只能为每个
DP
设置一个值

因此,我想将
黄色
然后
绿色
然后
红色
颜色依次应用于
控件
对象,然后能够重置
红色
,这样控件将具有
绿色
背景(另一方面,重置
绿色
会留下背景
红色
)。看起来很简单,你有没有为控件创建过这样的装饰器?我相信
DP
会在内部使用这种行为,但是没有针对它的公共API


请不要建议使用触发器或任何其他类型的条件
DP
设置,我真的需要为单个
DP
设置多个值,并能够管理它们说“不要建议”不是一个好主意。。。不管怎么说,这是不可能的,WPF并没有做到这一点,你的意思可能是这个值,但这是固定的,你不能仅仅在这两者之间添加另一层,这是有充分理由的。整个系统都依赖于此。否则,您无法设置一个值并使用触发器覆盖它,并且不需要重新设置该值。如果人们开始弄乱这个列表,动画、风格继承等也就不可能了

所以你不喜欢触发的想法。。。为什么?正是为了这个。 好的,如果您不喜欢,可以为
Background1
Background2
等添加附加属性。您还可以将Background作为附加属性并使其可继承。您可以进行附加行为、侦听属性更改和修改背景颜色。您可以使用多重绑定或优先级绑定。
如果不需要明显的解决方案,那么很多东西都是可能的:)

由于实现细节的原因,我不能使用触发器,这就是为什么我要求不要建议它们:)如何将背景绑定到数据上下文中的数字,使用值转换器将数字转换为预定义的颜色列表,这样转换器就会返回您想要的颜色。这是解决问题的一种方法。颜色的数量不受限制,但我会考虑这样的解决方案,谢谢