改变故事板中使用的颜色?

时间:2016-07-15 07:43:00

标签: c# wpf wpf-style

我处在我的程序中定义了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>

现在,我希望这些颜色可以更改,因此我的程序中有一些区域可以通过编程方式更改它们:

Application.Current.Resources["AccentColor"] = color;
Application.Current.Resources["AccentDarkColor"] = color;
Application.Current.Resources["AccentDarkerColor"] = color;

这会带来一个问题,因为我的应用程序中还定义了故事板,允许应用程序从一种颜色淡化(通过ColorAnimation)到另一种颜色(例如从AccentColor淡出到{ {1}})。

当这些故事板执行此操作时,他们使用AccentDarkColor,因为无法使用StaticResource(因为DynamicResource必须是freezable),WPF才能执行此操作。< / p>

我尝试了什么?

我尝试将故事板移至Storyboard,然后(在我的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

我该怎么办?

0 个答案:

没有答案