Странное поведение ImageButton в ListView - PullRequest
0 голосов
/ 13 февраля 2019

ImageButtons на ListView вызывает у меня головную боль. Взгляните на рисунок здесь.

Как видите, скрытые кнопки ImageButton (3 вертикальные точки справа от каждой строки ListView) становятся супермаленький, как ListView прокручивается вверх и вниз.

Это соответствующий XAML:

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

Полный XAML здесь. 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. Кнопки ImageButback в ListView сильно глючат.У кого-нибудь есть исправление?
  2. Кто-нибудь может сказать мне, как получить родительский объект Image, имеющий только дочерний объект TapGestureRecognizer?

Я думаю, что ответ на любой из этих двух вопросов решит мою проблему, хе-хе.

Кроме того, это один из моих первых опытов, когда я задаю вопросы здесь, прошу прощения, если я сделал что-то не так.

Спасибо всем:)

1 Ответ

0 голосов
/ 13 февраля 2019

Причиной вашей проблемы является ошибка, которая в настоящее время находится в списке xamarin, которую можно найти здесь:

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

Решение состоит в том, чтобы понизить версию v3.4 до тех пор, покамы получаем интимное со стороны XF

Goodluck, если у вас есть вопросы

...