从Xamarin形式的视图模型导航

时间:2019-06-01 12:36:31

标签: xamarin.forms

我正在尝试从视图模型中以Xamrian形式推送视图,但是当用户输入正确的用户名和密码后,它应该能够显示主页,但我似乎无法使其真正发挥作用。

您将看到我有一个on Submit命令,目前这只是模拟数据,所以不要介意此阶段的代码设计会发生变化。

通常我会使用

var stocktakepage = new StockTake();         
await Navigation.PushAsync(stocktakepage);

但是模型与类中的导航堆栈无关,这是他们从视图模型导航的另一种方法。

public  class LoginViewModel : INotifyPropertyChanged
{
    public Action DisplayInvalidLoginPrompt;
    public event PropertyChangedEventHandler PropertyChanged = delegate { };
    private string email;
    public string Email
    {
        get { return email; }
        set
        {
            email = value;
            PropertyChanged(this, new PropertyChangedEventArgs("Email"));
        }
    }
    private string password;
    public string Password
    {
        get { return password; }
        set
        {
            password = value;
            PropertyChanged(this, new PropertyChangedEventArgs("Password"));
        }
    }
    public ICommand SubmitCommand { protected set; get; }
    public LoginViewModel()
    {
        SubmitCommand = new Command(OnSubmit);
    }
    public void OnSubmit()
    {
        if (email != "handheld1" || password != "test123")
        {
            DisplayInvalidLoginPrompt();
        }else

        {




        }
    }
}

2 个答案:

答案 0 :(得分:0)

我在这里找到了答案

Vertical-align: baseline而且在我的主要登录页面上,我也有这个。这样做就像代理一样,可让您从原始调用页面中推送视图。

    public Login()
    {
         var vm = new LoginViewModel();
        this.BindingContext = vm;

Password.Completed += (object sender, EventArgs e) =>
{
     vm.SubmitCommand.Execute(null);


  };
}

答案 1 :(得分:0)

您也可以使用以下内容从ViewModel导航。您可以针对所需的每种页面类型执行此操作。查看以下示例:

await App.Current.MainPage.Navigation.PushAsync(new PageName());

await App.Current.MainPage.Navigation.PushModalAsync(new NavigationPage(new PageName()) { BarBackgroundColor = Color.FromHex("#101010"), BarTextColor = Color.White, }, true);