2015-10-29 78 views
4

我目前面臨以下問題:在Xamarin頁自定義事件C#

我想,當用戶輸入有效憑據才能觸發一個事件,這樣我可以切換網頁等。

問題是我因爲某種原因無法掛鉤事件(雖然我非常肯定它會是一些愚蠢的事情)。

的類觸發事件:

namespace B2B 
{ 

    public partial class LoginPage : ContentPage 
    { 
     public event EventHandler OnAuthenticated; 

     public LoginPage() 
     { 
      InitializeComponent(); 
     } 

     void onLogInClicked (object sender, EventArgs e) 
     { 
      loginActivity.IsRunning = true; 

      errorLabel.Text = ""; 

      RestClient client = new RestClient ("http://url.be/api/"); 

      var request = new RestRequest ("api/login_check", Method.POST); 
      request.AddParameter("_username", usernameText.Text); 
      request.AddParameter("_password", passwordText.Text); 

      client.ExecuteAsync<Account>(request, response => { 

       Device.BeginInvokeOnMainThread (() => { 
        loginActivity.IsRunning = false; 

        if(response.StatusCode == HttpStatusCode.OK) 
        { 
         if(OnAuthenticated != null) 
         { 
          OnAuthenticated(this, new EventArgs()); 
         } 
        } 
        else if(response.StatusCode == HttpStatusCode.Unauthorized) 
        { 
         errorLabel.Text = "Invalid Credentials"; 
        } 
       }); 

      }); 

     } 
    } 
} 

,並在 '主類'

namespace B2B 
{ 
    public class App : Application 
    { 
     public App() 
     { 
      // The root page of your application 
      MainPage = new LoginPage(); 

      MainPage.OnAuthenticated += new EventHandler (Authenticated); 

     } 

     static void Authenticated(object source, EventArgs e) { 
      Console.WriteLine("Authed"); 
     } 
    } 
} 

當我嘗試建立我得到的應用:

類型「Xamarin。 Forms.Page'不包含'OnAuthenticated'的定義,並且沒有擴展方法OnAuthenticated

我已經嘗試在LoginPage類中添加一個委託,但它沒有幫助。

任何人都可以如此友好地指出我什麼愚蠢我正在犯的錯誤?

回答

5

MainPage定義爲Xamarin.Forms.Page。這個班級沒有名爲OnAuthenticated的房產。因此錯誤。 您需要在該類型的變量LoginPage實例存儲,以便將其分配給MainPage能夠訪問在類中定義的屬性和方法之前:

var loginPage = new LoginPage(); 
loginPage.OnAuthenticated += new EventHandler(Authenticated); 
MainPage = loginPage; 
+0

非常感謝!雖然綁定MainPage - > LoginPage MainPage = new LoginPage();發出抱怨根視圖控制器的錯誤。 – RVandersteen

+0

我看到你編輯了你的awser,完全像這樣。再次感謝 – RVandersteen