如何在xamarin表单中向内容页添加单击处理程序

如何在xamarin表单中向内容页添加单击处理程序,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我是Xamarin.Forms的新手,正在尝试向我的内容页添加单击事件。我希望在用户单击页面时启动一个事件,无论在何处 我在WinPhone应用程序中创建了类似的功能,在WinPhone应用程序中,我可以使用PhoneApplicationPage上提供的OnLeftMouseButtonDown解决我的问题,但在ContentPage中找不到合适的对应项。有什么建议吗?为了使这项工作正常进行,您必须在内容页面中添加一个布局,因为您需要指定一些内容,并将水平选项和垂直选项设置为布局选项。填充和扩

我是Xamarin.Forms的新手,正在尝试向我的内容页添加单击事件。我希望在用户单击页面时启动一个事件,无论在何处


我在WinPhone应用程序中创建了类似的功能,在WinPhone应用程序中,我可以使用PhoneApplicationPage上提供的OnLeftMouseButtonDown解决我的问题,但在ContentPage中找不到合适的对应项。有什么建议吗?

为了使这项工作正常进行,您必须在内容页面中添加一个布局,因为您需要指定一些内容,并将水平选项和垂直选项设置为布局选项。填充和扩展

但这还不足以正确处理水龙头

您还需要为布局指定背景色。我将我的设置为颜色。透明。如果尝试不指定颜色,则不起作用

然后,您必须将一个TapGestureRecognitor附加到内容页面,以捕获所做的点击

虽然在我下面的测试中,标签按钮都能很好地使用,但仍然会在这两种类型上收到WindowsPhone点击手势,与按钮单击事件一起触发-这在Android上不完全起作用-因为按钮单击将阻止点击手势事件触发

另一种选择是尝试将“不可见”网格覆盖在所有内容的顶部。但是,这种方法的问题是,您将失去使用WindowsPhone触发的单击事件处理程序,也将失去使用Android触发的单击事件处理程序。但好的方面是,你可以在任何地方检测到点击,尽管不会传递。这取决于你在一天结束时想要达到的目标

StackLayout objStackLayout = new StackLayout()
{
    Orientation = StackOrientation.Horizontal,
    HorizontalOptions = LayoutOptions.FillAndExpand,
    VerticalOptions = LayoutOptions.FillAndExpand,
    BackgroundColor = Color.Transparent
};
//
Label objLabel1 = new Label();
objLabel1.BackgroundColor = Color.Red;
objLabel1.Text = "label1";
objLabel1.HorizontalOptions = LayoutOptions.Start;
objLabel1.VerticalOptions = LayoutOptions.Start;
objLabel1.WidthRequest = 100;
objLabel1.HeightRequest = 300;
objStackLayout.Children.Add(objLabel1);
//
Label objLabel2 = new Label();
objLabel2.BackgroundColor = Color.Green;
objLabel2.Text = "label2";
objLabel2.Font = Font.OfSize("Arial", 48);
objLabel2.WidthRequest = 100;
objLabel2.HeightRequest = 300;
objStackLayout.Children.Add(objLabel2);
//
Button objButton1 = new Button();
objButton1.Text = "Click Me";
objButton1.WidthRequest = 300;
objButton1.HeightRequest = 300;
objStackLayout.Children.Add(objButton1);
//
this.Content = objStackLayout;


TapGestureRecognizer objTapGestureRecognizer1 = new TapGestureRecognizer();
objTapGestureRecognizer1.Tapped += ((o2, e2) =>
    {
        System.Diagnostics.Debug.WriteLine("Clicked!");
    });

this.Content.GestureRecognizers.Add(objTapGestureRecognizer1);

它可以在WindowsPhone上使用按钮,但不能在Android上使用。谢谢你的回复,这正是我想要的!我已经用一些新的发现更新了我的答案。