我尝试在鼠标越过时设置控件的背景颜色。我尝试通过Visual State Manager进行。我能够运行以下代码:

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Control.Background" Storyboard.TargetName="BorderBackground">
    <DiscreteObjectKeyFrame KeyTime="0">
        <DiscreteObjectKeyFrame.Value>
            <SolidColorBrush Color="#FF123456" />
        </DiscreteObjectKeyFrame.Value>
    </DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>

但是我不想在模板中设置颜色,而是将其绑定到控件的值。我用以下方式尝试了“标签”属性:

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Control.Background" Storyboard.TargetName="BorderBackground">
    <DiscreteObjectKeyFrame KeyTime="0">
        <DiscreteObjectKeyFrame.Value>
            <SolidColorBrush Color="{TemplateBinding Tag}" />
        </DiscreteObjectKeyFrame.Value>
    </DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>

并设置使用此样式为“#ff123456”的控件的标签范围。

但这不起作用。它不会给我留下错误消息,它根本不会更改背景色。有人知道,问题可能是什么?

提前致谢,
坦率

有帮助吗?

解决方案

不幸的是,您试图做的方式在Silverlight中无法使用。 VisualStateManager动画不是显示树的一部分,因此您不能使用绑定。但是,您有选项,staticresources(又称资源词典中的颜色设置)和基于代码的动画是不同的解决方法(取决于您想做的事情)。对于后者,请查看一个线程,我问了一个类似的问题: 我如何在Silverlight 4 Usercontrol中动态化属性动画?

其他提示

您不能在单个目标上动态执行此操作,但是您可以做的是创建另一个目标(例如称为BordenBackgrandAlt),您的背景可以在其声明中明确设置为{templateBinding tag}。

然后,您默认情况下可以使边后式格林加尔特倒塌,在动画框架中,而不是切换颜色,切换可见性,从而使边后式折叠折叠并可见边缘背侧。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top