Почему не срабатывает свойство IsMouseOver у кнопок?

215
12 ноября 2021, 15:10

Я решил создать кастомный WindowChrome с использованием соответствующего тега XAML.

Возникла небольшая проблема с реализацией кнопок Maximize, Minimize, Close и Restore - не срабатывает триггер, который должен изменять цвет бэкграунда этих кнопок при наведении на них, описанный в общем стиле этих кнопок.

Код XAML всех используемых стилей

<Style x:Key="CaptionButtonStyle"
       TargetType="Button">
    <Setter Property="Background"
            Value="Transparent" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid x:Name="LayoutRoot"
                      Width="44"
                      Height="30">
                    <TextBlock x:Name="txt"
                               FontFamily="Segoe MDL2 Assets"
                               Text="{TemplateBinding Content}"
                               FontSize="10"
                               Foreground="#FFFFFF"
                               HorizontalAlignment="Center"
                               VerticalAlignment="Center"
                               RenderOptions.ClearTypeHint="Auto"
                               TextOptions.TextRenderingMode="Aliased"
                               TextOptions.TextFormattingMode="Display" />
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver"
                             Value="True">
                        <Setter Property="Background"
                                Value="#FFFFFF" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style x:Key="MinimizeButtonStyle"
       TargetType="Button"
       BasedOn="{StaticResource CaptionButtonStyle}">
    <Setter Property="Content"
            Value="&#xE949;" />
</Style>
<Style x:Key="MaximizeButtonStyle"
       TargetType="Button"
       BasedOn="{StaticResource CaptionButtonStyle}">
    <Setter Property="Content"
            Value="&#xE739;" />
</Style>
<Style x:Key="RestoreButtonStyle"
       TargetType="Button"
       BasedOn="{StaticResource CaptionButtonStyle}">
    <Setter Property="Content"
            Value="&#xE923;" />
</Style>
<Style x:Key="CloseButtonStyle"
       TargetType="Button"
       BasedOn="{StaticResource CaptionButtonStyle}">
    <Setter Property="Content"
            Value="&#xE8BB;" />
</Style>

Код XAML всех созданных кнопок

<Button x:Name="buttonClose"
        Style="{StaticResource CloseButtonStyle}"
        HorizontalAlignment="Right"
        VerticalAlignment="Top"
        Margin="0,0,0,0"
        Width="44"
        Height="30"/>
<Button x:Name="buttonMaximize"
        Style="{StaticResource MaximizeButtonStyle}"
        HorizontalAlignment="Right"
        VerticalAlignment="Top"
        Margin="0,0,44,0"
        Width="44"
        Height="30" />
<Button x:Name="buttonMinimize"
        Style="{StaticResource MinimizeButtonStyle}"
        HorizontalAlignment="Right"
        VerticalAlignment="Top"
        Margin="0,0,88,0"
        Width="44"
        Height="30" />

Код XAML WindowChrome

<WindowChrome.WindowChrome>
    <WindowChrome CaptionHeight="30"
                  GlassFrameThickness="-1"
                  CornerRadius="0"
                  NonClientFrameEdges="None"
                  ResizeBorderThickness="5"
                  UseAeroCaptionButtons="true" />
</WindowChrome.WindowChrome>
READ ALSO
Получить значение из Combobox, который внутри DataGrid WPF MVVM

Получить значение из Combobox, который внутри DataGrid WPF MVVM

Есть DataGrid, в ней несколько колонок, одна из них с ComboboxСписок для Combobox подгружаю из внешнего файла

335