1

当鼠标悬停在控件上时,我尝试设置控件的背景颜色。我尝试通过视觉状态管理器来做到这一点。我能够运行以下代码:

<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”。

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

提前致谢,
弗兰克

4

2 回答 2

2

不幸的是,您尝试这样做的方式在 Silverlight 中不起作用。VisualStateManager 动画不是显示树的一部分,因此您不能使用绑定。不过,您可以选择,StaticResources(也就是在资源字典中设置颜色)和基于代码的动画是不同的解决方法(具体取决于您想要做什么)。对于后者,请查看我问过类似问题的线程:如何在 Silverlight 4 UserControl 中动态地为属性设置动画?

于 2010-12-14T14:46:23.793 回答
0

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

然后你可以让 BorderBackgroundAlt 默认折叠,并且在你的动画帧中而不是切换颜色,切换可见性,这样 BorderBackground 被折叠并且 BorderBackgroundAlt 是可见的。

于 2013-12-10T20:46:14.497 回答