我在按钮内有一个自定义控件。在控件的模板中,我有一个矩形和一个文本块。按下按钮时,VSM会动画按钮的“(Button.Foreground)。(SolidColorBrush.Color)”属性,该属性会传播到文本块,因此文本的颜色会发生变化。
如何将矩形的填充属性设置为同一个画笔?
我试过“{TemplateBinding Foreground}”,“{Binding Path = Foreground,RelativeSource = {RelativeSource Self}}”,甚至在代码中创建绑定(在OnApplyTemplate中) - 要么根本不起作用,要么初始设置颜色没有动画。我还尝试将元素绑定到元素绑定以将矩形的Fill属性绑定到TextBlock的Foreground属性,结果相同(初始颜色正常,而动画颜色不同)。
提前致谢。
答案 0 :(得分:0)
我认为它可能是WP 7.1中的一个错误。
找到了解决方法。为了完成所有工作:
Fill="{TemplateBinding Foreground}"
<VisualState x:Name="Normal">
内,设置正常状态的前景色。当初始前景值来自按钮样式中的<Setter Property="Foreground" ...
时,当可视状态管理器为前景值设置动画时,TextBlock对象会接收新值,但<Rectangle Fill="{TemplateBinding Foreground}"
仍然使用旧颜色绘制
当初始值来自可视状态管理器时,自定义控件模板中的矩形正在接收新的属性值,因为VSM会为颜色更改设置动画。