0

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

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

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

提前致谢。

4

1 回答 1

0

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

找到了解决方法。为了使这一切正常工作:

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

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

当初始值来自可视状态管理器时,自定义控件模板内的矩形正确地接收新的属性值,因为 VSM 动画颜色变化。

于 2012-09-02T00:14:09.873 回答