c# - Xamarin 页面 c# 中的自定义事件

标签 c# events xamarin xamarin.forms

我目前面临以下问题:

我试图在用户输入有效凭据时触发一个事件,以便我可以切换页面等。

问题是由于某种原因我无法连接到事件中(尽管我很确定这会很愚蠢)。

触发事件的类:

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 类内部或外部添加一个委托(delegate),但没有帮助。

有谁能指出我犯的愚蠢错误吗?

最佳答案

MainPage 定义为 Xamarin.Forms.Page。此类没有名为 OnAuthenticated 的属性。因此错误。 在将 LoginPage 的实例分配给 MainPage 之前,您需要将其存储在该类型的变量中,以便访问该类中定义的属性和方法:

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

关于c# - Xamarin 页面 c# 中的自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417690/

相关文章:

c# - 我将如何通过与 RPC 样式服务相对的 REST 服务添加新数据?

c - 使用事件驱动套接字时如何生成网络事件 FD_WRITE?

c# - 将布局保存到位图(Xamarin)

c# - OSX Yosemite 10.10 上 Xamarin 中的 PCL 库

c# - 使用 Xamarin 显示 Android ProgressBar

c# - 在 Cake 构建脚本中提交计数?

c# - C 指针结构 - buffer 指向另一个结构。如何在 C# 中?

c# - 如何从 C# 的 char * 到非托管 C++ DLL 传递和接收数据

javascript - $(document).ready 之前的事件

javascript - Tinymce节点内容已更改