【问题标题】:Matching ViewModel and View in MVVMCross在 MVVMCross 中匹配 ViewModel 和 View
【发布时间】: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();

但是,MainViewModelStart 方法永远不会被调用。原因似乎是输出中的此错误:

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


【解决方案1】:

大规模的Doh!在这里,但我会发布解决方案;我的视图没有使用 MvxStoreView,而是使用标准的 StoreView。

解决方案是按如下方式更改视图:

 ...
 xmlns:views="using:Cirrious.MvvmCross.WindowsStore.Views"
 ...
<views:MvxStorePage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    相关资源
    最近更新 更多