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
也为空。我都尝试过。
所以:
我相信回答这两个问题中的任何一个都会解决我的问题,呵呵。
这也是我第一次在这里提问的经历之一,如果做错了事,请原谅。
谢谢:)
答案 0 :(得分:0)
您的问题背后的原因是xamarin列表视图中当前存在一个错误,该错误可以在此处找到:
https://github.com/xamarin/Xamarin.Forms/issues/5200
目前,解决方案是降级到v3.4,直到我们从XF方面了解到
如果您有疑问,请祝您好运