gpt4 book ai didi

mvvm - 如何从 ViewModel 调用 TapGestureRecognizer

转载 作者:行者123 更新时间:2023-12-03 10:56:35 28 4
gpt4 key购买 nike

我正在尝试实现 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>

我在 xaml.cs 页面( View )中实现了 HideListOnTap,如下所示:(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)中的手势识别器与 IrrigNetViewModel 中的 HideListOnTap 绑定(bind))

最佳答案

使用 Command每当您想处理 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
}

关于mvvm - 如何从 ViewModel 调用 TapGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748773/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com