在ObjectAnimation usingekeyframes中使用模板键入
-
09-10-2019 - |
题
我尝试在鼠标越过时设置控件的背景颜色。我尝试通过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}。
然后,您默认情况下可以使边后式格林加尔特倒塌,在动画框架中,而不是切换颜色,切换可见性,从而使边后式折叠折叠并可见边缘背侧。
不隶属于 StackOverflow