【问题标题】:Bind rectangle's Fill color to Foreground color将矩形的填充颜色绑定到前景色
【发布时间】:2012-08-27 03:24:52
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

    找到解决方法。为了让一切顺利:

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

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

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

    【讨论】:

    • 由于某种原因,它在按钮模板中工作正常,但在 ListBox 项目模板中不起作用:-(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多