gpt4 book ai didi

wpf - 如何绑定(bind)到 WPF ColorAnimation 中的颜色?

转载 作者:行者123 更新时间:2023-12-01 22:35:06 25 4
gpt4 key购买 nike

我想做一些看似很简单的事情,但我不知道该怎么做。我有一个 ColorAnimation,当 MouseEnter 事件发生时触发。它只是将边框的背景颜色从一种颜色更改为另一种颜色。

不幸的是,我不知道如何将硬编码颜色之外的任何内容放入此 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>

当我尝试执行其中任何一个操作时,都会引发异常。对于第一个,它抛出一个异常,本质上告诉我“Color”属性不能采用 SolidColorBrush 值...这是有道理的...但它肯定不会帮助我,因为 ColorAnimation 不会让我这样做为“(Border.Background).(SolidColorBrush)”属性设置动画...它只会让我为“(Border.Background).(SolidColorBrush.Color)”属性设置动画...

第二个示例的异常基本上告诉我,它“无法卡住此 Storyboard 时间线树以便跨线程使用”...所以听起来 ColorAnimation 正在尝试在 UI 线程或其他线程中进行此绑定(bind)某物?无论它想做什么......它都不起作用。

我怎么能完成这么简单的任务?

最佳答案

对于第一个,您可以使用 {StaticResource MyColor} ,其中 MyColor 定义如下:

<Color x:Key="MyColor">#FF00FF00</Color>

但是,这并不能解决您的问题:您无法绑定(bind)到动画属性,因为这些属性需要卡住(不可更改)才能使动画正常工作。尝试消除对绑定(bind)的依赖,或者当颜色发生变化时,使用后面的代码中的正确颜色重新创建 Storyboard。

关于wpf - 如何绑定(bind)到 WPF ColorAnimation 中的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com