Silverlight 在ObjectAnimationUsingKeyFrames中使用TemplateBinding

Silverlight 在ObjectAnimationUsingKeyFrames中使用TemplateBinding,silverlight,coding-style,templatebinding,Silverlight,Coding Style,Templatebinding,我尝试在鼠标悬停在控件上时设置控件的背景色。我尝试通过可视化状态管理器来实现。我能够运行以下代码: <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Control.Background" Storyboard.TargetName="BorderBackground"> <DiscreteObjectKeyFrame KeyTime="0"> <DiscreteObjectK

我尝试在鼠标悬停在控件上时设置控件的背景色。我尝试通过可视化状态管理器来实现。我能够运行以下代码:

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

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

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

并将使用此样式的控件的标记属性设置为“#FF123456”

但这不起作用。它没有给我留下错误信息,只是没有改变背景颜色。谁都知道,可能是什么问题

提前感谢,

弗兰克

不幸的是,在Silverlight中,你尝试的方法无法奏效。VisualStateManager动画不是显示树的一部分,因此不能使用绑定。不过,您可以选择静态资源(即在资源字典中设置颜色)和基于代码的动画是不同的解决方法(具体取决于您想要做什么)。对于后者,请查看我问了一个类似问题的线程:

您不能在单个目标上动态执行此操作,但您可以创建另一个目标(例如称为BorderBackgroundAlt),您可以在其声明中将其背景显式设置为{TemplateBinding Tag}


然后,默认情况下可以折叠BorderBackgroundAlt,并在动画帧中切换可见性,而不是切换颜色,这样BorderBackground将折叠,BorderBackgroundAlt将可见。

这是一个小问题,无论如何,非常感谢!现在我可以停止尝试:/