0

我在按钮内部有一个自定义控件。在控件的模板中,我有一个矩形和一个文本块。当按下按钮时,VSM动画化按钮的“(Button.Foreground)。(SolidColorBrush.Color)”属性,该属性传播到文本块,以便文本的颜色发生更改。将矩形的填充颜色填充为前景色

如何将矩形的fill属性设置为相同的画笔?我试过“{TemplateBinding Foreground}”,“{Binding Path = Foreground,RelativeSource = {RelativeSource Self}}”,甚至在代码中创建绑定(在OnApplyTemplate中) - 根本不起作用,或者最初设置颜色不是动画。我也尝试过使用元素绑定来将矩形的Fill属性绑定到TextBlock的Foreground属性,结果相同(初始颜色正常,但动画颜色不同)。

在此先感谢。

回答

0

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

找到了解决方法。为了让所有的工作:

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

当初始前景值按钮的风格来自<Setter Property="Foreground" ...,当视觉状态管理器动画前台值,TextBlock的对象接收新的值,但是<Rectangle Fill="{TemplateBinding Foreground}"撑绘有旧颜色。

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

+0

出于某种原因,它在按钮模板内工作正常,但在列表框项目模板中不起作用:-( – Soonts