Joh*_*han 3 xamarin xamarin.forms
我是Xamarin.Forms的新手,正在尝试将click事件添加到我的内容页面.我希望在用户点击页面时启动一个事件,无论在哪里.
我在WinPhone应用程序中创建了类似的功能,我可以通过PhoneApplicationPage上的OnLeftMouseButtonDown解决我的问题,但我在ContentPage中找不到合适的对应物.有什么建议?
为了得到这个工作,你有一个添加布局到ContentPage,因为你将要指定一些内容,并设置HorizontalOptions和VerticalOptions到LayoutOptions.FillAndExpand.
尽管如此,这还不足以正确处理水龙头.
您还需要为Layout指定BackgroundColor.我将我的设置为Color.Transparent.如果您尝试未指定颜色,则它不起作用.
然后,您必须将TapGestureRecognizer附加到ContentPage,以捕获所做的点击.
虽然我在下面的测试中适用于标签和按钮,但仍然在两种类型上都接收了TapPestures for WindowsPhone,以及按钮点击事件触发 - 这不适用于Android - 因为按钮单击将阻止TapGesture事件触发.
另一种选择是尝试在所有东西的顶部放置一个" 隐形 " 网格.但是,这种方法的问题在于,您将松开Click事件处理程序,无法使用WindowsPhone触发,还会松开Click事件处理程序,无法使用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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7800 次 |
最近记录: |