我尝试通过使用MainViewModel.cs中的以下内容在MvvmCross中导航
public IMvxAsyncCommand GoToSettingsPage => new MvxAsyncCommand(() => _navService.Navigate<SettingsViewModel>());
我的SettingsViewModel.cs看起来像这样
public class SettingsViewModel : MvxViewModel
{
private readonly IMvxNavigationService _navService;
public SettingsViewModel(IMvxNavigationService _navService)
{
this._navService = _navService;
}
public override Task Initialize() => base.Initialize();
public IMvxAsyncCommand GoToMainPage => new MvxAsyncCommand(() => _navService.Navigate<MainViewModel>());
}
这是我的SettingsView.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:local="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<Button
android:text="Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1"
local:MvxBind="Click GoToMainPage" />
</LinearLayout>
如果我启动我的应用程序并立即加载到SettingsViewModel中而不是MainViewModel中,它就可以正常工作。导航无法进行,但我总是收到以下消息:
System.Collections.Generic.KeyNotFoundException: Could not find view for WCFManager.ViewModels.SettingsViewModel
我知道,它无法通过KeyNotFoundException找到关联的视图,但是我找不到任何手动将其关联的方法,并且根据类似的问题,它会通过名称自动将其关联。不幸的是,这个名称已经正确,当我像这样从头开始加载视图时,便可以找到视图
[Activity]
public class MainView : MvxActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.MainView);
}
}
答案 0 :(得分:0)
通过写自己的问题,我意识到自己是多么盲目。 每个视图都只有一个.axml文件是不够的,您还需要为其提供一个类。我只是复制了在问题中显示的MainView类,而是编写了SettingsView。效果很好。
[Activity]
public class SettingsView : MvxActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.SettingsView);
}
}