Как добавить кнопку в строку заголовка 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"