2016-03-05 50 views
6

我正在開發跨平臺的xamarin應用程序,並且我想爲「忘記密碼?」創建超鏈接標籤。在登錄頁面。 我已經使用下面的代碼來創建標籤,但我不知道如何創建onclick事件。如何在xamarin表單中的標籤上創建點擊事件動態

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, 
         }, 
         new Label //for this label I want to create click event to open new page 
         { 
          Text="Forgot Password?", 
          FontSize=20, 
          TextColor=Color.Blue, 
          HorizontalOptions=LayoutOptions.Center, 

         }, 
        } 
     } 
      }; 

回答

9

試試這個:

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

樣品:

 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); 
3
MyClickyLabel.GestureRecognizers.Add(
    new TapGestureRecognizer() { 
     Command = new Command(() => { 
      /* Handle the click here */ 
     }) 
    } 
); 
+0

對不起,但這段代碼不適合我,原因是什麼? ();}};' '私人異步無效lblLogin_Clicked(){等待Navigation.PushAsync(新的LoginPage()){ );}' –

+0

如果你不使lblLogin異步,會發生什麼?或者讓你的命令異步並等待在lblLogin上? – noelicus

2

對於誰喜歡使用XAML和誰喜歡直接綁定命令到視圖模型的人,你可以使用這個:

<Label HorizontalOptions="Center" 
     TextColor="Blue" 
     FontSize="20" 
     Text="Forgot Password?"> 
    <Label.GestureRecognizers> 
     <TapGestureRecognizer Command="{Binding ForgotPasswordCommand}" /> 
    </Label.GestureRecognizers> 
</Label> 
相關問題