WPF:如何使路径的整个“块”可点击

12

我为一些准备了特殊的ControlTemplate

<ControlTemplate TargetType="{x:Type Button}">
    <Path Name="ThePath" Fill="White" Stretch="UniformToFill" 
          Width="12" Height="12" Stroke="White"
          StrokeThickness="4" 
          Data="M1.5,1.5 L10.5,10.5 M1.5,10.5 L10.5,1.5"/>
    <ControlTemplate.Triggers>
        <Trigger Property="IsFocused" Value="True">
            <Setter Property="Fill" Value="#afa" TargetName="ThePath"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

这个代码可以正常工作,但由于我使用了一个 Path(在这种情况下,它的形状就像一个胖 X),只有路径本身是可点击的,而不是 X 的角落之间的小空间。是否有任何自动化的方法可以使整个 X 的“块”可点击?

我考虑过将路径包装在一个矩形对象中,但我想确保我没有忽略任何简单的东西。


1
你没有错过任何东西,这就是它的实现方式(将其包装在矩形、网格、画布或任何具有非空背景的东西中)。 - Aviad P.
1个回答

20

Aviad P. 是正确的。这是我的做法:

<Border Background="Transparent">
  <Path ... />
</Border>

这能正常工作是因为在进行“点选测试”以确定鼠标点击的路由位置时,“透明”画刷被视为常规颜色。


一个小提示:实际上并不需要将路径包装在任何东西中,可以在模板中使用第二个路径来组成应该可点击的形状,并设置 Fill="Transparent"(我需要让一个圆形形状可点击,而不想用 BorderCornerRadius 来操作,在我的情况下)。 - Joey
只有当我在“Border”中添加 IsHitTestVisible="True" 时,这才对我起作用。 - Chris Ballance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接