Как добавить кнопку в строку заголовка WPF при использовании пользовательского окна chrome?

Я пытаюсь создать простой шаблон кнопки, в котором кнопка обычно выглядит как одна горизонтальная линия, но при наведении мыши на кнопку будет отображаться заливка цвета "прямоугольник" позади нее. Это код, который у меня есть, но я не могу заставить триггеры сработать.

<Window x:Class="TestStylingWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <WindowChrome.WindowChrome>
        <WindowChrome CaptionHeight="36" GlassFrameThickness="0 0 0 1" ResizeBorderThickness="5" />
    </WindowChrome.WindowChrome>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="36" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Button Height="36" Width="36" 
                    HorizontalAlignment="Center" VerticalAlignment="Center"
                Grid.Row="0">
            <Button.Template>
                <ControlTemplate>
                    <Grid>
                        <Rectangle x:Name="PART_ButtonBackgroundRectangle" Fill="LightGray" Width="36" Height="36" Opacity="0" />
                        <Path x:Name="PART_ButtonPath" Data="M10,26 L26,26" Stroke="DarkGray" StrokeThickness="1.5" />
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger SourceName="PART_ButtonBackgroundRectangle" Property="IsMouseOver" Value="True">
                            <Setter TargetName="PART_ButtonBackgroundRectangle" Property="Opacity" Value="1" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Button.Template>
        </Button>
    </Grid>
</Window>

кто-нибудь знает, почему мой триггер не будет работать, или, возможно, лучший способ сделать это? Я новичок в WPF и хотел бы рефакторинг это (так как использовать его во многих кнопок), но не уверен как.

обновление: Ok, поэтому я предполагаю, что это происходит потому, что кнопка находится в строке заголовка окна. Есть хороший способ обойти это? Может быть, способ установить приоритет щелчка / наведения на кнопку?

1 ответов


вам нужно установить Hittest видны кнопки, такие как:

shell:WindowChrome.IsHitTestVisibleInChrome="True"