如何根据当前主题更改 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>
我有一个这样定义的 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>