我想做一些看似很简单的事情,但是我不知道该怎么做。当鼠标进入时,我有一个ColorAnimation触发。它只是将Border的背景颜色从一种颜色更改为另一种颜色。
不幸的是,我无法在这个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线程之外的某个其他线程中进行此绑定?无论它试图做什么...它都不起作用。
我该如何完成这样一个简单的任务?