[英]WPF IsMouseOver trigger, hitbox for trigger isn't over the button
我为一个包含边框和文本块的按钮定义了一个自定义模板,如下所示:
<Style x:Key="WindowControlButtons" BasedOn="{StaticResource WindowControlButtonsFont}" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Padding="{TemplateBinding Padding}" Height="100" Background="Yellow">
<TextBlock Text="{TemplateBinding Content}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="{StaticResource FgOrangeBrush}" />
</Trigger>
</Style.Triggers>
</Style>
我试图将其悬停时更改为橙色前景,并且它可以工作(有点)。 仅当鼠标位于实际标签下方约5-30像素之间时,它才会注册“鼠标悬停”。 边框上的黄色背景让我可以看到按钮,但通常是透明的。 这是该按钮的两个实例的屏幕截图:
我已经在悬停触发IsMouseOver触发器的位置添加了蓝色轮廓。
基本上,我想知道为什么触发器没有在大多数按钮上触发。 如果有帮助,这里是按钮的声明:
<Button HorizontalAlignment="Right" Margin="10 0" Grid.Column="2" Content="X" Style="{StaticResource WindowControlButtons}" />
<Button HorizontalAlignment="Right" Margin="35 0" Grid.Column="2" Content="_" Style="{StaticResource WindowControlButtons}" />
非常感谢你!
由于我使用的是窗口镶边,当您不将其添加到样式中时,“ hitbox”会发生一些奇怪的事情:
<Setter Property="WindowChrome.IsHitTestVisibleInChrome" Value="True" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.