XAML:将画笔转换为颜色?

时间:2011-02-03 00:33:00

标签: wpf xaml wpf-controls

我正在使用两种文本颜色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资源?

- 是否有更简单的方法来完成工作?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果我理解正确的话,你所尝试的将无法奏效。即使你将Colors定义为资源,你仍然需要将它们绑定到画笔资源,然后你又回到原点!

一种解决方案是在代码后面而不是在模板中执行。由于它是一个自定义控件,因此您可以非常直接地将其添加到代码中,而不会搞砸设计。