将矩形的填充颜色绑定到前景颜色

时间:2012-09-01 18:02:40

标签: silverlight windows-phone-7 dependency-properties visualstatemanager

我在按钮内有一个自定义控件。在控件的模板中,我有一个矩形和一个文本块。按下按钮时,VSM会动画按钮的“(Button.Foreground)。(SolidColorBrush.Color)”属性,该属性会传播到文本块,因此文本的颜色会发生变化。

如何将矩形的填充属性设置为同一个画笔?

我试过“{TemplateBinding Foreground}”,“{Binding Path = Foreground,RelativeSource = {RelativeSource Self}}”,甚至在代码中创建绑定(在OnApplyTemplate中) - 要么根本不起作用,要么初始设置颜色没有动画。我还尝试将元素绑定到元素绑定以将矩形的Fill属性绑定到TextBlock的Foreground属性,结果相同(初始颜色正常,而动画颜色不同)。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为它可能是WP 7.1中的一个错误。

找到了解决方法。为了完成所有工作:

  • 在自定义控件模板中,指定Fill="{TemplateBinding Foreground}"
  • 在按钮模板中,在<VisualState x:Name="Normal">内,设置正常状态的前景色。

当初始前景值来自按钮样式中的<Setter Property="Foreground" ...时,当可视状态管理器为前景值设置动画时,TextBlock对象会接收新值,但<Rectangle Fill="{TemplateBinding Foreground}"仍然使用旧颜色绘制

当初始值来自可视状态管理器时,自定义控件模板中的矩形正在接收新的属性值,因为VSM会为颜色更改设置动画。