MVVMCross - 导航ViewModel

时间:2013-06-14 01:47:09

标签: windows-phone-7 viewmodel mvvmcross

当我尝试打开一个新的viewmodel时,我收到以下错误:

无法从定位器MvxDefaultViewModelLocator加载类型EasyBudget.Core.ViewModels.GridCategoryViewModel的ViewModel

它也显示:

未找到符号。

显示无法找到或打开PDB文件。

我的观点模型:

public class HomeViewModel 
    : MvxViewModel
{
    private Cirrious.MvvmCross.ViewModels.MvxCommand _listCommandCategory;

    public System.Windows.Input.ICommand ListCommandCategory
    {
        get
        {
            _listCommandCategory = _listCommandCategory ?? new Cirrious.MvvmCross.ViewModels.MvxCommand(DoListCategory);
            return _listCommandCategory;
        }
    }

    private void DoListCategory()
    {
        ShowViewModel<GridCategoryViewModel>();
    }   
}

我的另一个视图模型:

public partial class GridCategoryView : MvxPhonePage
{
    public GridCategoryView()
    {
        InitializeComponent();
    }
}

有谁知道我可以伪造什么?

祝你好运

Wilton Ruffato Wonrath

2 个答案:

答案 0 :(得分:1)

我认为问题很可能出现在构建ViewModel的地方:

  • 也许构造函数本身不公开?
  • 可能无法找到构造函数的一个或多个参数?
  • 或许构造函数中的一些代码抛出异常

您发布了“我的其他视图模型”,您实际上只为其他视图发布了代码。你可以发布该视图附带的ViewModel的代码吗?


如果您启用调试器来中断所有异常,那么这可能会帮助您找到加载期间出现的问题(在https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross/ViewModels/MvxDefaultViewModelLocator.cs内)。


如果你想要一个pdb用于调试器符号,那么这些可以在http://github.com/slodge/MvvmCross-Binaries的文件夹中找到 - 在VS2012 / Release文件夹中。我们目前正在尝试通过SymbolSource.org解决这些问题(本周首先得到了请求/建议)


最后,如果您想从Windows版本中查看跟踪并使用nuget中的发行包,那么您可以通过覆盖Setup.cs文件中的CreateDebugTrace()来执行此操作 - 例如尝试:

    protected override IMvxTrace CreateDebugTrace()
    {
        return new MvxDebugTrace();
    }

如果您想使用:

,还可以在核心代码中添加一些调试跟踪
    Mvx.Trace(format, args...)
    Mvx.Warning(format, args...)
    Mvx.Error(format, args...)

答案 1 :(得分:0)

也许,您忘记了将ViewModel类型添加到通用MvxPhonePage中。 试试这个:

public partial class GridCategoryView : MvxPhonePage<GridCategoryViewModel>