Я создал ContentTemplate и стиль для ToggleButton, который выглядит как тот, который вы знаете по Microsoft WebMatrix.
Однако щелкать не всегда возможно, и эффект наведения не отображается.Я понял, что область щелчка / наведения появляется при наведении курсора на значок или текст моей кнопки.
Один разhovered Можно вернуться мышью вправо, и курсор не исчезнет (как и должно быть).
Вот важная часть кода:
<StackPanel.Resources>
<Style TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource NavigationButton}" />
</StackPanel.Resources>
<ToggleButton x:Name="_btn_Buchungen" Click="_btn_Buchungen_Click">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Image Source="{StaticResource Buchungen}" Width="16" Height="16" />
<TextBlock Text="Buchungen" />
</StackPanel>
</ToggleButton>
ControlTemplate иСтили:
<Style TargetType="{x:Type ToggleButton}" x:Key="NavigationButton">
<Setter Property="Background" Value="{x:Null}" />
<Setter Property="Height" Value="35" />
<Setter Property="BorderBrush" Value="{x:Null}" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border Name="OuterBorder" BorderThickness="0,1,0,0" >
<Border Name="InnerBorder" BorderThickness="0,1,0,1" >
<ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Center"/>
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Style" TargetName="InnerBorder" Value="{StaticResource ButtonInnerBHover}" />
<Setter Property="Style" TargetName="OuterBorder" Value="{StaticResource ButtonOuterBHover}" />
</Trigger>
<Trigger Property="IsChecked" Value="true">
<Setter Property="Style" TargetName="InnerBorder" Value="{StaticResource ButtonInnerBHover}" />
<Setter Property="Style" TargetName="OuterBorder" Value="{StaticResource ButtonOuterBHover}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Left" />
<Setter Property="Margin" Value="10, 0,0,0" />
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="1" Direction="270" ShadowDepth="1" Color="White" />
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type StackPanel}">
<Setter Property="Margin" Value="20,0,0,0" />
</Style>
</Style.Resources>
</Style>
При наведении указателя мыши на всю ширину самой кнопки наведите курсор мыши на ToggleButton, а также нажмите на него.
Я пытался исправить это с помощью различных свойств, таких как горизонтальное растяжение и IsHitTestVisible, но пока не получил. Есть идеи?
Уже видел эту ветку и пробовал разные вещи с решением, но не смог понять. Проблема с щелчком мыши по кнопке toggleButton в WPF