2017-06-01 34 views
0

我在Xamarin中使用MVVMCross创建应用程序。这是我的代码:MVVMCross使用ShowViewModel在VievModel中返回导航

Android设备上查看(iOS版几乎是相同的):

var button = (Button)FindViewById(Resource.Id.button3); 
var set = this.CreateBindingSet<MenuView, MenuViewModel>(); 
set.Bind(button).To(vm => vm.CommandNavigateToSecondPage); 
set.Apply(); 

核心视图模型:

public ICommand CommandNavigateToSecondPage 
{ 
    get 
    { 
     return new MvxCommand((() => 
     { 
      ShowViewModel<SecondPageViewModel>(); 
     })); 
    } 
} 

我想有一个默认的后退按钮将导航我以前页。我在核心做了与简单的功能相同的导航,并有后退按钮。像这样:

public void Navigate() 
{ 
    ShowViewModel<SecondPageViewModel>(); 
} 

MVVM是所有关于绑定的,这就是为什么我想这样做。

+0

显示Android的

[Activity (Label = "MyView")] public class MyView : MvxActivity { protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); SetContentView(Resource.Layout.ThirdNativeView); ActionBar.SetDisplayHomeAsUpEnabled(true); } /// handle back navigation here public override bool OnOptionsItemSelected(IMenuItem item) { switch (item.ItemId) { case Android.Resource.Id.Home: //Execute viewModel command here this.Finish(); return true; default: return base.OnOptionsItemSelected(item); } } } 

更多信息默认主页/后退按钮移到回你可以简单地使用'关闭(这)之前的视图模型;' – Fahadsk

+0

我知道。但是我的操作栏上没有后退按钮。我发现我需要删除“OnCreate”中的SupportActionBar.SetDisplayHomeAsUpEnabled(true)行(在iOS中也是如此)。我不知道这个方法来自哪里。在iOS上,后退导航工作正常,但是当我在Android中单击后退按钮时,什么都没有发生:/我是否需要重写BackButton默认方法? – OskarS

回答