Я работаю над приложением WPF, которое использует MahApps MetroWindow в качестве главного окна. Я использовал стили для кнопок «Свернуть / Развернуть» и «Закрыть», которые встроены в MetroWindow. Стиль в настоящее время выглядит следующим образом: (стиль максимизации и закрытия близок)
<Controls:MetroWindow.WindowMinButtonStyle>
<Style TargetType="Button">
<Setter Property="Background" Value="{DynamicResource PrimaryHueMidBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource BlackBrush}"/>
<Setter Property="Width" Value="35"/>
<Setter Property="HorizontalContentAlignment"
Value="Center" />
<Setter Property="VerticalContentAlignment"
Value="Center" />
<Setter Property="Padding"
Value="1" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="grid"
Background="{TemplateBinding Background}">
<ContentPresenter x:Name="contentPresenter"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
RecognizesAccessKey="True"
Opacity="0.75" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter TargetName="contentPresenter"
Property="Opacity"
Value="1" />
</Trigger>
<Trigger Property="IsMouseOver"
Value="False">
<Setter TargetName="contentPresenter"
Property="Opacity"
Value=".5" />
</Trigger>
<Trigger Property="IsEnabled"
Value="false">
<Setter Property="Foreground"
Value="#ADADAD" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Controls:MetroWindow.WindowMinButtonStyle>
Сам стиль работает, как и ожидалось, но я упускаю одну вещь:
- Когда приложение теряет фокус, я хочу установить фон этих кнопок серым, как и все остальные приложения. На данный момент кнопки все еще привязаны к ресурсу
PrimaryHueMidBrush
.
Хотя я мог бы изменить фон кнопок в этом событии, но я не могу найти кнопки закрытия max max в MetroWindow.
private void Window_Deactivated(object sender, EventArgs e)
{
SolidColorBrush gray = new SolidColorBrush(Colors.Gray);
StatusBar.Background = gray;
}
private void Window_Activated(object sender, EventArgs e)
{
StatusBar.Background = (SolidColorBrush)FindResource("PrimaryHueMidBrush");
}
Есть ли способ установить фон этих кнопок, когда приложение теряет фокус (window_deactivation)?