1

当我尝试打开一个新的视图模型时,我收到以下错误:

无法从定位器 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();
    }
}

有谁知道我可能会忘记什么?

此致

威尔顿·鲁法托·沃拉斯

4

2 回答 2

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 的发布包,那么您可以通过CreateDebugTrace()在 Setup.cs 文件中覆盖来执行此操作 - 例如尝试:

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

如果您想使用,这也将允许您向核心代码添加一些调试跟踪:

    Mvx.Trace(format, args...)
    Mvx.Warning(format, args...)
    Mvx.Error(format, args...)
于 2013-06-14T05:18:47.740 回答
0

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

public partial class GridCategoryView : MvxPhonePage<GridCategoryViewModel>
于 2019-08-04T17:25:15.890 回答