Как вызвать TapGestureRecognizer из ViewModel - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь реализовать TapGestureRecognizer, который будет вызываться в ViewModel (xaml.cs), а не в классе View ...

Вот пример кода в файле xaml: (IrrigNetPage.xaml)

 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:i18n="clr-namespace:agroNet.AppResource;assembly=agroNet"
         xmlns:viewModels="clr-namespace:agroNet.ViewModel"
         x:Class="agroNet.View.IrrigNetPage"
         BackgroundColor="#EBEBEB">

    <Grid>
        <Grid.GestureRecognizers>
            <TapGestureRecognizer Tapped="HideListOnTap"/>
        </Grid.GestureRecognizers>
    </Grid>

Я реализовал HideListOnTap на странице xaml.cs (просмотр) следующим образом: (IrrigNetPage.xaml.cs)

    int visibility = 1;
    private void HideListOnTap(object sender, EventArgs e)
    {
        visibility++;
        if ((visibility % 2) == 0)
        {
            IrrigList.IsVisible = false;
        }
        else
        {
            IrrigList.IsVisible = true;
        }
    }

Работает нормально, но как сделать то же самое с помощью ViewModel? (Как связать распознаватель жестов из (IrrigNetPage.xaml) с HideListOnTap в IrrigNetViewModel)

1 Ответ

1 голос
/ 18 апреля 2019

Используйте команду всякий раз, когда вы хотите обработать какое-либо событие во ViewModel.Без передачи аргументов код будет выглядеть следующим образом

<!-- in IrrigNetPage.xaml -->

<TapGestureRecognizer Command="{Binding HideListOnTapCommand}"/>

И в ViewModel IrrigNetPageViewModel.cs

public ICommand HideListOnTapCommand { get; } 

public IrrigNetPageViewModel()
{
   HideListOnTapCommand = new Command(HideListOnTap); 
   // if HideListOnTap is async create your command like this
   // HideListOnTapCommand = new Command(async() => await HideListOnTap());

}

private void HideListOnTap()
{
   // do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...