ColorAnimation不喜欢我在WPF xaml文件中使用DynamicSource
我的应用程序中的某些关键颜色作为动态资源加载。除了彩色动画外,大多数控件都可以这样做。为此,它抛出一个异常: 无法将属性“To”中的值转换为类型为“System.Windows.Media.Color,PresentationCore,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35]”的对象FF93CF65'不是属性“To”的有效值 我在样式中使用了完全相同的资源,在这种情况下效果很好。所讨论的xaml如下所示: 有人对此有什么想法吗?ColorAnimation不喜欢我在WPF xaml文件中使用DynamicSource,wpf,silverlight,xaml,Wpf,Silverlight,Xaml,我的应用程序中的某些关键颜色作为动态资源加载。除了彩色动画外,大多数控件都可以这样做。为此,它抛出一个异常: 无法将属性“To”中的值转换为类型为“System.Windows.Media.Color,PresentationCore,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35]”的对象FF93CF65'不是属性“To”的有效值 我在样式中使用了完全相同的资源,在这种情况下效果很好。所讨论的xaml如下所示: 有
-Dave您正在尝试使用笔刷属性设置颜色值。试着改变
<ColorAnimation BeginTime="00:00:00.3" Duration="00:00:00.4" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="{StaticResource ButtonBorder}"/>
致:
您正在尝试使用笔刷属性设置颜色值。试着改变
<ColorAnimation BeginTime="00:00:00.3" Duration="00:00:00.4" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="{StaticResource ButtonBorder}"/>
致:
根据几小时的随机实验,我得出结论,这是不可能做到的。终于不容易了。根据几小时的随机实验,我得出结论,这是不可能做到的。终于不容易了。我刚试过,效果不错
<Color x:Key="ButtonBorderColor">Green</Color>
<SolidColorBrush x:Key="ButtonBorder" Color="{StaticResource ButtonBorderColor}" />
<Style x:Key="ChildWindowButtonBarButtonStyle" TargetType="{x:Type Button}">
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorder}" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="#ffffb14c" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation BeginTime="00:00:00" Duration="00:00:04" Storyboard.TargetProperty="Opacity" From="1" To=".5" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation BeginTime="00:00:00" Duration="00:00:04" Storyboard.TargetProperty="Opacity" From=".5" To="1" />
<!--<ColorAnimation BeginTime="00:00:00" Duration="00:00:02" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="Green"/>-->
<ColorAnimation BeginTime="00:00:00" Duration="00:00:04" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="{StaticResource ButtonBorderColor}"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
我刚试过,效果不错
<Color x:Key="ButtonBorderColor">Green</Color>
<SolidColorBrush x:Key="ButtonBorder" Color="{StaticResource ButtonBorderColor}" />
<Style x:Key="ChildWindowButtonBarButtonStyle" TargetType="{x:Type Button}">
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorder}" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="#ffffb14c" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation BeginTime="00:00:00" Duration="00:00:04" Storyboard.TargetProperty="Opacity" From="1" To=".5" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation BeginTime="00:00:00" Duration="00:00:04" Storyboard.TargetProperty="Opacity" From=".5" To="1" />
<!--<ColorAnimation BeginTime="00:00:00" Duration="00:00:02" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="Green"/>-->
<ColorAnimation BeginTime="00:00:00" Duration="00:00:04" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="{StaticResource ButtonBorderColor}"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
不,没有快乐。我确实找到了另一篇文章,它似乎说这是设计的,不容易解决。因此,我要结束这个问题。不,没有乐趣。我确实找到了另一篇文章,它似乎说这是设计的,不容易解决。因此,我结束这个问题。