ListView上怪异的ImageButton的行为

时间:2019-02-13 12:09:54

标签: xaml listview xamarin xamarin.forms imagebutton

ListView上的

ImageButtons让我头疼。 Take a look at the gif here.

如您所见,当ListView上下滚动时,隐藏的ImageButton(每个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一起使用,但这对我来说是个大问题,因为我需要访问Image元素以获取其坐标并在正确的位置生成菜单。用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>

隐藏代码:

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,我找不到一种获取Image父级的方法只有TapGestureRecognizer子级。另外,tapGesture.Parent为空,tapGesture.Parent.Parent也为空。我都尝试过。


所以:

  1. ListView上的ImageButtons很难进行调试。有人解决了吗?
  2. 有人能告诉我如何让只有孩子TapGestureRecognizer的Image父对象吗?

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

这也是我第一次在这里提问的经历之一,如果做错了事,请原谅。

谢谢:)

1 个答案:

答案 0 :(得分:0)

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

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

目前,解决方案是降级到v3.4,直到我们从XF方面了解到

如果您有疑问,请祝您好运