我遇到了一个非常微不足道的问题(乍一看)。 我的情况的简化版本如下所示:
我希望将多个Background
(例如)颜色应用于SAME Control
,并且只能清除部分颜色(按条件)。 WPF
不提供此类功能,我只能为每个DP
设置一个值。
所以,我想先将Yellow
然后Green
然后Red
颜色依次应用到Control
对象,然后才能重置Red
以便控件将使用Green
背景(另一方面,重置Green
会留下背景Red
)。看起来很简单,你有没有创建过这样的Decorator for Control?我相信DP
在内部使用这种行为,但没有公共API。
请不要建议使用触发器或任何其他类型的条件DP
设置,我真的需要为单个DP
设置多个值并且能够管理它们
答案 0 :(得分:1)
说“不建议”不是一个好主意......无论如何,好吧它不可能,而WPF不会这样做,你可能想要的是价值precendence但List固定,你不能只在中间添加另一层,原因很简单。整个系统依赖于此。否则,您无法设置一个值并使用触发器覆盖它,也不需要重置值。如果人们开始弄乱这个列表,动画,风格继承等也是不可能的。
所以你不喜欢触发器的想法......为什么?正是为了这个。
好吧,如果您不喜欢它,那么如何为Background1
,Background2
等添加附加属性。您还可以将Background作为附加属性并使其可继承。您可以创建附加行为,收听属性更改并修改背景颜色。您可以使用MultiBinding或PriorityBinding。
如果不需要明显的解决方案,很多东西是可能的:)