我正在使用两种文本颜色ColorA和ColorB创建自定义控件。 ColorA连接到控件的Foreground
属性,ColorB连接到名为ForegroundAlt
的自定义依赖项属性。这两个属性都是Brush
个对象。控件的XAML使用此标记获取属性值:
<SolidColorBrush x:Key="BrushA" Color="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}}" />
<SolidColorBrush x:Key="BrushB" Color="{Binding Path=ForegroundAlt, RelativeSource={RelativeSource TemplatedParent}}" />
我需要在控件模板中的两种颜色之间设置sme文本动画,这就是我遇到问题的地方。
通常,我只是创建一个绑定到每个Brush.Color属性的数据,如下所示:
To="{Binding Source={StaticResource BrushB}, Path=Color}"
但这不适用于此。结果是you can't use bindings on an animation inside a control template。
作为一种解决方法,我想创建一对Color
资源以配合Brush资源:
<Color x:Key="ColorA" ??? />
<Color x:Key="ColorB" ??? />
每个Color
资源都应该具有相应画笔的颜色。然后我可以将颜色作为静态资源引用,并避免在动画中进行数据绑定。
所以,这是我的问题:
- 我如何声明Color
资源?
- 是否有更简单的方法来完成工作?
感谢您的帮助。
答案 0 :(得分:0)
如果我理解正确的话,你所尝试的将无法奏效。即使你将Colors定义为资源,你仍然需要将它们绑定到画笔资源,然后你又回到原点!
一种解决方案是在代码后面而不是在模板中执行。由于它是一个自定义控件,因此您可以非常直接地将其添加到代码中,而不会搞砸设计。