2

假设我有一个这样的矩形:

<Rectangle Grid.Column="1"
           Stroke="Red"
           StrokeDashArray="4.0 4.0"
           StrokeThickness="{Binding Path=CurrentThickness}"
           Visibility="{Binding Path=VisibleRectangle,
                                Converter={StaticResource VisibilityConverter}}"
           MouseUp="HandleMouseUp" />

这适用于对 MouseUp 事件的矩形本身进行命中测试。但是,矩形的典型宽度是 1px 宽,因此很难单击矩形的边缘。我想让矩形笔画的“有效点击边框大小”大于该笔画的视觉外观。(例如,假设矩形被绘制为 1px 宽,但鼠标点击区域实际上是 3px 宽)

这样的事情可能吗,还是我被迫增加矩形笔画的厚度?

4

2 回答 2

2

哈克解决方案:

在同一个地方放一个“透明”矩形,然后制作你的矩形IsHitTestVisible="False"

<Rectangle x:Name="Clickable"
           Grid.Column="1"
           MouseUp="HandleMouseUp"
           Fill="#01FFFFFF"/>

<Rectangle Grid.Column="1"
           Stroke="Red"
           StrokeDashArray="4.0 4.0"
           StrokeThickness="{Binding Path=CurrentThickness}"
           IsHitTestVisible="False"
           Visibility="{Binding Path=VisibleRectangle,
                                Converter={StaticResource VisibilityConverter}}"/>
于 2013-10-07T23:08:59.030 回答
0

这就是我最终使用的,基于 HighCore 的答案。注意用于将显示的矩形移动到命中测试矩形中间的边距:

<!-- This border is displayed when XXX. -->
<!-- Note that the margin moves it into the middle of the hit testing
     rectangle below. -->
<Rectangle Stroke="Red"
           StrokeDashArray="4.0 4.0"
           Margin="1"
           StrokeThickness="{Binding Path=CurrentThickness}"
           Visibility="{Binding Path=VisibleRectangle,
                                Converter={StaticResource VisibilityConverter}}" />

<!-- This border handles hit testing when XXX. -->
<Rectangle Panel.ZIndex="10"
           StrokeThickness="3"
           Stroke="Transparent"
           MouseUp="HandleMouseUp"
           Visibility="{Binding Path=VisibleRectangle,
                                Converter={StaticResource VisibilityConverter}}" />
于 2013-10-08T00:59:40.527 回答