我想做一些看似很简单的事情,但我不知道该怎么做。我有一个在 MouseEnter 事件发生时触发的 ColorAnimation。它只是将边框的背景颜色从一种颜色更改为另一种颜色。
不幸的是,我不知道如何将硬编码颜色以外的任何内容放入此 ColorAnimation。所以它目前看起来像这样:
<Style x:Key="MouseOverStyle">
<Style.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="0:0:0.5" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
To="Red" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
但是,我想做这样的事情:
<SolidColorBrush x:Key="MyEventColor" Color="{Binding EventColor}" />
<Style x:Key="MouseOverStyle">
<Style.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="0:0:0.5" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
To="{StaticResource MyEventColor}" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
或者像这样:
<Style x:Key="MouseOverStyle">
<Style.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="0:0:0.5" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
To="{Binding EventColor}" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
当我尝试执行其中任何一项时,都会引发异常。首先,它抛出一个异常,基本上告诉我“颜色”属性不能采用 SolidColorBrush 值......这是有道理的......但它肯定对我没有帮助,因为 ColorAnimation 不会让我为“(Border.Background)。(SolidColorBrush)”属性设置动画......它只会让我为“(Border.Background)。(SolidColorBrush.Color)”属性设置动画......
第二个示例的异常基本上告诉我它“无法冻结此 Storyboard 时间线树以供跨线程使用”......所以听起来 ColorAnimation 正在尝试在 UI 线程或其他线程之外的其他线程中执行此绑定?无论它试图做什么......它都不起作用。
我怎么能做这么简单的任务?