奇怪的 ImageButton 在 ListView 上的行为

Weird ImageButton's behavior on ListView

ListView 上的 ImageButtons 让我很头疼。 Take a look at the gif here.

如您所见,当 ListView 上下滚动时,隐藏的 ImageButtons(每个 ListView 行右侧的 3 个垂直点)变得非常小。

这是对应的XAML:

<ImageButton
    Source="more_options"
    HorizontalOptions="End"
    WidthRequest="21"
    BackgroundColor="Transparent"
    Clicked="OnMoreOptionsTapped"
    CommandParameter="{Binding .}"
    Grid.Column="2"
    Grid.Row="0"/>

Full XAML is here. ImageButton 在第 56 行。

我做错了什么?我该如何解决这个问题?


另外,我知道我可以只使用带有 TapGestureRecognizer 的图像,但这对我来说是个大问题,因为我需要访问图像元素以获取它的坐标并在正确的位置生成菜单。使用 ImageButton 做到这一点是小菜一碟,但使用 TapGestureRecognizer 就没那么容易了。我做了这样的事情:

XAML

<Image
    Source="more_options"
    Aspect="AspectFit"
    HorizontalOptions="End"
    WidthRequest="21"
    BackgroundColor="Transparent"
    Grid.Column="2"
    Grid.Row="0">
    <Image.GestureRecognizers>
        <TapGestureRecognizer 
            Tapped="OnMoreOptionsTapped"
            CommandParameter="{Binding .}"/>
    </Image.GestureRecognizers>
</Image>

Code-behind:

private void OnMoreOptionsTapped(object sender, TappedEventArgs args)
{
    var tapGesture = sender as TapGestureRecognizer;
    var button = tapGesture.Parent as Image;
    ...
}

基本上,对于 ImageButton 元素,object sender 是一个 ImageButton 元素,但是对于图像,object sender 是一个 TapGestureRecognizer,我找不到获取图像的方法 parent 而我只有 TapGestureRecognizer child。此外,tapGesture.Parent 为空,tapGesture.Parent.Parent 也为空。我都试过了。


所以:

  1. ListView 上的 ImageButton 出现问题。有人有解决办法吗?
  2. 任何人都可以告诉我如何获得只有 child TapGestureRecognizer 的图像 parent?

我相信回答这两个问题中的任何一个都会解决我的问题呵呵。

另外,这是我第一次在这里提问,如有不当之处还请见谅。

谢谢大家:)

您的问题背后的原因是 xamarin 列表视图中当前存在的错误,可在此处找到:

https://github.com/xamarin/Xamarin.Forms/issues/5200

解决方案是暂时降级到 v3.4,直到我们从 XF 方面得到一个亲密关系

如果您有疑问,祝您好运