Xamarin Forms 增加图像的命中区域

Xamarin Forms Increase Hit Area of Image

我正在开发一个 Xamarin.Forms 应用程序,在该应用程序中我使用图像作为可点击图标来关闭弹出窗口。我已经通过 TapGestureRecognizer 使图像可点击,如下所示:

<Image Source="x-icon.png" HeightRequest="15" WidthRequest="15">
  <Image.GestureRecognizers>
    <TapGestureRecognizer Tapped="OnClosePopupTapped"/>
  </Image.GestureRecognizers>
</Image>

我的 xaml.cs 中的 OnClosePopupTapped 函数被正确命中。

我的问题是只有图片的左上角触发函数(图片的命中区域不是完整图片)。

有谁知道将点击区域增加到整个图像而不仅仅是左上角的解决方案吗?

实现更大点击框的一种简单方法是将您的图像包裹在另一个控件中,例如 <StackLayout><Frame>,并在父控件上应用适当的填充。然后,将您的手势识别器应用于父级并将您的图像设置为 InputTransparent

应该看起来像这样:

  <Frame Padding="10">
    <Frame.GestureRecognizers>
      <TapGestureRecognizer Tapped="OnClosePopupTapped"/>
    </Frame.GestureRecognizers>

    <Image Source="x-icon.png" HeightRequest="15" WidthRequest="15" InputTransparent="True"/>
  </Frame>

InputTransparent 当设置为 true 时会将输入传递给下面的元素,在本例中是 Frame

另外,我还没有亲自尝试过,但我认为最新的 Xamarin.Forms 支持图像按钮,这可能也是一个简单的解决方案:

<Button Image="x-icon.png" Command="OnClosePopopCommand"/>