【问题标题】:Weird ImageButton's behavior on ListViewListView 上奇怪的 ImageButton 行为
【发布时间】:2019-02-13 12:09:53
【问题描述】:

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 的图像,但这对我来说是个大问题,因为我需要访问图像元素来获取它的坐标并在正确的位置生成菜单。使用 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 元素,但对于一个 Image,object sender 是一个 TapGestureRecognizer,我找不到获取 Image 父级的方法,而我只有 TapGestureRecognizer孩子。此外,tapGesture.Parent 为空,tapGesture.Parent.Parent 也为空。我都试过了。


所以:

  1. ListView 上的ImageButtons 很难出故障。有人有解决办法吗?
  2. 谁能告诉我如何获取只有孩子 TapGestureRecognizer 的 Image 父级?

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

另外,这是我第一次在这里提问的经历之一,如果我做错了什么,请见谅。

谢谢大家:)

【问题讨论】:

  • Dio 你有 ListView 和 Xamarin Forms v3.5?
  • @G.hakim 是的。我什至尝试了 beta 4.0,但它仍然存在问题。

标签: xaml listview xamarin xamarin.forms imagebutton


【解决方案1】:

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

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

解决方案是现在降级到 v3.4,直到我们从 XF 方面得到一个亲密

如果您有疑问,Goodluck 回复

【讨论】:

  • 感谢您的输入,但无法还原。我已经降级到第一个和最后一个 3.4 版本,但没有任何运气。 ImageButton 的行为是相同的。有一个 PR 来解决这个问题 github.com/xamarin/Xamarin.Forms/pull/5233 - 希望它尽快解决,呵呵
  • 您是否在重新运行之前删除了该应用程序?共享运行时有时会很讨厌总是删除现有的构建并在更改 XF 版本后重新运行代码
  • 我没有,但一看到你的评论,我就再次尝试(这次删除了应用程序),它也没有工作
  • @agharium 你介意我在 GitHub 上记录这个错误吗?我们可能会从那里得到更好的解决方案
猜你喜欢
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
相关资源
最近更新 更多