在Xamarin.Forms中,如果你遇到EventHandler
为空,导致无法使用TapGestureRecognizer
在MainPage
上调用命令的问题,通常是因为绑定上下文或命令设置不正确。以下是一个详细的示例,展示如何正确设置TapGestureRecognizer
和命令绑定。
首先,创建一个ViewModel,其中包含你要绑定的命令。例如,创建一个名为MainViewModel
的类:
using System.Windows.Input;
using Xamarin.Forms;
public class MainViewModel
{
public ICommand TapCommand { get; }
public MainViewModel()
{
TapCommand = new Command(OnTapped);
}
private void OnTapped()
{
// 处理点击事件
Application.Current.MainPage.DisplayAlert("Tapped", "You tapped the label!", "OK");
}
}
在你的MainPage.xaml.cs
文件中,设置绑定上下文为MainViewModel
:
using Xamarin.Forms;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
BindingContext = new MainViewModel();
}
}
在你的MainPage.xaml
文件中,设置TapGestureRecognizer
并绑定到ViewModel中的命令:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="YourNamespace.MainPage">
<StackLayout>
<Label Text="Tap me!"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand}" />
</Label.GestureRecognizers>
</Label>
</StackLayout>
</ContentPage>
现在,你可以运行你的应用,点击Label
时将触发TapCommand
,并显示一个警告对话框。
MainPage
的构造函数中正确设置了BindingContext
。领取专属 10元无门槛券
手把手带您无忧上云