使用ShowViewModel在VievModel中进行MVVMCross返回导航

时间:2017-06-01 09:13:46

标签: c# xamarin mvvm xamarin.ios xamarin.android

我正在使用MVVMCross在Xamarin制作应用程序。这是我的代码:

Android View(iOS几乎相同):

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

Core ViewModel:

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

我希望有一个默认的后退按钮,可以将我导航到上一页。我在核心中用简单的功能做了相同的导航,并且有后退按钮。像这样:

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

MVVM是关于绑定的,这就是我想以这种方式实现它的原因。

1 个答案:

答案 0 :(得分:1)

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

有关执行命令here

的更多信息