如何根据当前主题更改 MahApps.Metro 进度条颜色?

How can I change a MahApps.Metro progress bar color, based on the current theme?

我有一个这样定义的 MahApps.Metro 进度条;

<Controls:MetroProgressBar Name="progressBar"
                     Grid.Column="0"
                     Grid.Row="2"
                     Minimum="0"
                     Maximum="100"
                     Height="20"
                     Foreground="LightBlue"
                                   />

我不想将 Foreground 定义为静态 LightBlue,而是希望它根据我当前的主题进行更改。

我正在使用他们的 ThemeManager 更改主题

MahApps.Metro.ThemeManager.ChangeAppStyle(System.Windows.Application.Current,
                                    MahApps.Metro.ThemeManager.GetAccent(myAccent),
                                    MahApps.Metro.ThemeManager.GetAppTheme(myTheme));

有没有办法从应用程序中获取当前的主题或口音并将其放入 xaml 文件?

当前主题的强调色在资源 AccentColor 中定义为颜色,在资源 AccentColorBrush 中定义为画笔。您可以简单地将画笔分配给您的进度条:

<Controls:MetroProgressBar Name="progressBar"
                     Grid.Column="0"
                     Grid.Row="2"
                     Minimum="0"
                     Maximum="100"
                     Height="20"
                     Foreground="{DynamicResource AccentColorBrush}"
                                   />

额外答案:这是您如何通过绑定到 DataContext 中的 bool 来更改它。当绑定 属性 为 false

时,它恢复为默认值
<Controls:MetroProgressBar.Style>
    <Style TargetType="Controls:MetroProgressBar">
        <Setter Property="Foreground" Value="{DynamicResource AccentColorBrush}" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding PublicBoolInDataContext}"
                         Value="True">
                <Setter Property="Foreground" Value="DarkRed" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Controls:MetroProgressBar.Style>