C# 改变故事板中使用的颜色?
我在程序中定义了3种颜色。它们在C# 改变故事板中使用的颜色?,c#,wpf,wpf-style,C#,Wpf,Wpf Style,我在程序中定义了3种颜色。它们在App.xaml中定义如下: <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary x:Name="Aero"> <Color x:Key="AccentColor">#3
App.xaml
中定义如下:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary x:Name="Aero">
<Color x:Key="AccentColor">#3399ff</Color>
<Color x:Key="AccentDarkColor">#236bb2</Color>
<Color x:Key="AccentDarkerColor">#1e5b99</Color>
<SolidColorBrush x:Key="AccentBrush" Color="{DynamicResource AccentColor}" />
<SolidColorBrush x:Key="AccentDarkBrush" Color="{DynamicResource AccentDarkColor}" />
<SolidColorBrush x:Key="AccentDarkerBrush" Color="{DynamicResource AccentDarkerColor}" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
然而,这带来了一个问题,因为我的应用程序中也定义了故事板,允许应用程序从一种颜色淡入另一种颜色(例如从AccentColor
淡入AccentDarkColor
)
当这些故事板执行此操作时,它们使用静态资源
,因为WPF不能使用动态资源
(因为故事板
必须是可自由释放的)
我试了什么?
我还尝试将情节提要移动到App.xaml
,然后(在我的BeginStoryboard
中,参考情节提要的DynamicResource
:
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{DynamicResource BackgroundToAccentBorderToAccentDarkTransitionStoryboard}" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
但是,当我以编程方式更改情节提要时,当重新执行DataTrigger
时,它们不会更改,尽管它是DynamicResource
我能做什么?一个简单的解决办法是使用不同的ResourceDictionary,包含颜色和情节提要,并将它们作为一个整体进行替换。问题是颜色是动态的,必须以编程方式进行设置。我会在Windows的Aero颜色更改时更改它,并基于该颜色进行更改。一个简单的解决办法是:e拥有不同的ResourceDictionary,包含颜色和情节提要,并将它们作为一个整体替换。问题是颜色是动态的,必须通过编程进行设置。当Windows的Aero颜色更改时,我会更改它,并基于该颜色对其进行更改。
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{DynamicResource BackgroundToAccentBorderToAccentDarkTransitionStoryboard}" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>