改变最热门的区域

时间:2017-01-20 08:00:08

标签: c# wpf xaml hittest

想象一下,我将此椭圆应用于Style的ControlTemplate。 (例如:这将用于滑块的拇指)

<Ellipse x:Name="Ellipse" 
         Fill="#C0FFFFFF"
         Stroke="{StaticResource SpecialColor}"
         StrokeThickness="2"/>

现在,只要鼠标与此椭圆接触,该元素就会被鼠标捕获。如何更改碰撞几何?有没有XAML唯一的方法来做到这一点?

让我们说我想让碰撞区域更小,所以当鼠标位于椭圆中间时,它会抓住它。

或许我想让碰撞区域大于椭圆大小,所以当鼠标靠近椭圆时会抓住它。

1 个答案:

答案 0 :(得分:2)

这些解决方案不会改变椭圆的命中测试,但会尽可能提供XAML解决方案。

通过将Ellipse包装在容器(Grid?)中并将透明背景指定给容器,可以将其设置得更大。

<Grid Background="Transparent">
    <Ellipse Margin="5" ... />
</Grid>

将其缩小可以通过在顶部添加较小的几何体,再次使用透明背景并禁用椭圆上的命中测试来实现(IsHitTestVisible =“False”

<Grid>
    <Ellipse IsHitTestVisible="False" ... />
    <Grid Background="Transparent" Width="5" Height="5" />
</Grid>

重要提示:

  • 您需要将背景设置为透明显示。
  • 这两个解决方案都没有改变Ellipse的命中测试,但是使用'诱饵',所以你必须实现处理诱饵上的点击等事件并让它们作用于容器。