Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 改变故事板中使用的颜色?_C#_Wpf_Wpf Style - Fatal编程技术网

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

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

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