style linebreakmode entry xamarin xamarin.forms

linebreakmode - Cómo agregar un controlador de clics a la página de contenido en formularios xamarin



xamarin forms label multiline (1)

Para que esto funcione, debe agregar un Diseño a la página de contenido, ya que querrá especificar algo de contenido, y establecer las Opciones horizontales y Verticales en LayoutOptions.FillAndExpand .

Sin embargo, esto no es suficiente para manejar los grifos correctamente.

También necesita especificar un BackgroundColor para el diseño . Puse el mío en Color.Transparente . Si intentas sin especificar un Color , no funciona.

Luego debe adjuntar un TapGestureRecognizer a ContentPage para captar los clics que se realizan.

Aunque esto funciona bien con etiquetas y botones en mi prueba a continuación, sigue recibiendo TapGestures para WindowsPhone en ambos tipos, junto con el botón clic activación del evento, esto no funciona completamente con Android , ya que el clic del botón evitará que el evento TapGesture se active .

La otra alternativa es tratar de poner una Grilla " invisible " sobre todo. Sin embargo, el problema con este enfoque es que perderá que el controlador de eventos Click se dispare con WindowsPhone y también perderá que el controlador de eventos Click se dispare con Android . La parte buena, sin embargo, es que puedes detectar un clic en cualquier lugar, aunque no lo pases. Simplemente depende de lo que trates de lograr al final del día.

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);

Soy nuevo en Xamarin.Forms y estoy tratando de agregar un evento de clic a mi página de contenido. Quiero que un evento comience cuando el usuario haga clic en la página, sin importar dónde.

Creé una funcionalidad similar en una aplicación WinPhone, donde pude resolver mi problema con OnLeftMouseButtonDown, que estaba disponible en PhoneApplicationPage, pero no pude encontrar una contraparte adecuada en ContentPage. ¿Alguna sugerencia?