Esta es la respuesta más exacta que te podemos dar, sin embargo estúdiala pausadamente y valora si es compatible a tu proyecto.
Solución:
Para las personas que prefieren usar XAML y les gusta vincular Command directamente a ViewModel, pueden usar esto:
Y luego, en su ViewModel, solo asignará el comando a su función:
public ICommand ForgotPasswordCommand => new Command(OnForgotPassword);
Y luego defina la función con todo el trabajo hecho:
private async void OnForgotPassword()
...
PD: tendrás que declarar que eres using System.Windows.Input;
Prueba esto :
var forgetPasswordLabel = new Label // Your Forget Password Label
Text = "Forgot Password?",
FontSize = 20,
TextColor = Color.Blue,
HorizontalOptions = LayoutOptions.Center,
;
// Your label tap event
var forgetPassword_tap = new TapGestureRecognizer();
forgetPassword_tap.Tapped += (s,e) =>
//
// Do your work here.
//
;
forgetPasswordLabel.GestureRecognizers.Add(forgetPassword_tap);
Muestra :
var forgetPasswordLabel = new Label // Your Forget Password Label
Text = "Forgot Password?",
FontSize = 20,
TextColor = Color.Blue,
HorizontalOptions = LayoutOptions.Center,
;
MainPage = new ContentPage
BackgroundImage = "background.png",
Content = new StackLayout
VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalOptions = LayoutOptions.CenterAndExpand,
Spacing = 50,
Children =
new Label
//HorizontalTextAlignment = TextAlignment.Center,
Text = "Welcome, Please Sign in!",
FontSize=50,
TextColor=Color.Gray,
,
new Entry
Placeholder="Username",
VerticalOptions = LayoutOptions.Center,
Keyboard = Keyboard.Text,
HorizontalOptions = LayoutOptions.Center,
WidthRequest = 350,
HeightRequest = 50,
FontSize=20,
TextColor=Color.Gray,
PlaceholderColor=Color.Gray,
,
new Entry
Placeholder="Password",
VerticalOptions = LayoutOptions.Center,
Keyboard = Keyboard.Text,
HorizontalOptions = LayoutOptions.Center,
WidthRequest = 350,
HeightRequest = 50,
FontSize=25,
TextColor=Color.Gray,
IsPassword=true,
PlaceholderColor =Color.Gray,
,
new Button
Text="Login",
FontSize=Device.GetNamedSize(NamedSize.Large,typeof(Button)),
HorizontalOptions=LayoutOptions.Center,
VerticalOptions=LayoutOptions.Fill,
WidthRequest=350,
TextColor=Color.Silver,
BackgroundColor=Color.Red,
BorderColor=Color.Red,
,
forgetPasswordLabel
;
var forgetPassword_tap = new TapGestureRecognizer();
forgetPassword_tap.Tapped += (s,e) =>
//
// Do your work here.
//
;
forgetPasswordLabel.GestureRecognizers.Add(forgetPassword_tap);
Si hay varios lugares con etiquetas en las que se puede hacer clic, tiene sentido crear un control heredado de Xamarin. Forms Label y NO COLOCAR TapGestureRecognizer en todos los lugares donde se requiere la etiqueta.
public class ExtendedLabel : Label
private event EventHandler click;
public string Name
get; set;
public void DoClick()
click?.Invoke(this, null);
public event EventHandler Clicked
add
lock (this)
click += value;
var g = new TapGestureRecognizer();
g.Tapped += (s, e) => click?.Invoke(s, e);
GestureRecognizers.Add(g);
remove
lock (this)
click -= value;
GestureRecognizers.Clear();
En su archivo XAML, importa el espacio de nombres donde se define el control, por ejemplo
Y úsalo como control ordinario: