【发布时间】:2014-08-07 02:54:10
【问题描述】:
我有一个 MVVM Cross 应用程序,我正试图找出为什么没有显示初始屏幕(这是在 WinRT 上)。
以下代码看起来像是加载了 ViewModel MainViewModel:
var setup = new Setup(rootFrame);
setup.Initialize();
var start = Cirrious.CrossCore.Mvx.Resolve<Cirrious.MvvmCross.ViewModels.IMvxAppStart>();
start.Start();
但是,MainViewModel 的 Start 方法永远不会被调用。原因似乎是输出中的此错误:
Error seen during navigation request to MainViewModel - error KeyNotFoundException: Could not find view for MyApp.PCL.ViewModels.MainViewModel
所以,这是我对问题的猜测:它正在寻找MyApp.PCL.ViewModels.MainView,显然,这不存在。视图位于:MyApp.Views.MainView。我的假设是否正确,如果是,我如何说服 MVVMCross 寻找正确的位置?
编辑:
Setup 方法是从 MyApp.Windows WinRT 应用程序调用的。
protected override IMvxApplication CreateApp()
{
return new MyApp.PCL.App();
}
MyApp.PCL 是从MyApp.Windows 引用的可移植类库。
MyApp.PCL 包含 ViewModel,MyApp.Windows 包含视图。
我试图覆盖Start():
public class MainViewModel
: MvxViewModel
{
public override void Start()
{
System.Diagnostics.Debugger.Break();
base.Start();
}
但这永远不会被击中。
【问题讨论】:
-
您的视图不应该在 MyApp.WinRT.Views 中吗?
-
它仍然是一个不同的命名空间?
-
默认情况下,Mvx WindowsStore 在运行安装程序的整个程序集中查找视图。根据您的问题,我不知道发生了什么 - 看不到您的项目/解决方案结构是什么。您可以编辑您的问题以提供更多详细信息吗?或者我想你可以覆盖github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/… 来调试并进入你的案例中发生的事情。 github.com/MvvmCross/MvvmCross/wiki/…中有一些自定义信息
-
感谢斯图尔特这么快的回复。我已经更新了我的帖子。我没有提到的一件事(我不相信它是相关的)是该应用程序是一个通用应用程序;但是,我已经删除了 Windows Phone 项目。
标签: c# mvvm windows-runtime mvvmcross