为什么尝试显示ViewModel会抛出未处理的异常?

时间:2014-01-19 16:01:21

标签: viewmodel mvvmcross

我正在使用Visual Studio 2013和MvvmCross使用Portable Class Libraries创建Android应用程序。当我尝试根据第一个视图中的操作加载第二个ViewModel时,会抛出一个未处理的异常。

enter image description here

在我的第一个ViewModel,CatalogViewModel中,我有一个名为ShowCamera的ICommand,当点击CatalogView中的一个按钮时,它应该显示第二个ViewModel,CameraViewModel。

enter image description here

在CatalogView.axml中,我将按钮绑定到CatalogViewModel中的ShowCamera方法。

enter image description here

现在CameraViewModel只是一个空类,但它继承自MvxViewModel,就像CatalogViewModel一样

enter image description here

还有相应的CameraView.cs和CameraView.axml。

enter image description here

enter image description here

有没有其他人遇到过这个问题或者想知道为什么会抛出异常。我已经尝试在Get中使用try / catch来查看是否可以获得有关未处理异常的任何更具体的信息而没有任何运气(catch块永远不会被命中,异常总是抛出ShowViewModel行)。

提前致谢。

1 个答案:

答案 0 :(得分:3)

正如斯图尔特所指出的那样,正是由于CameraView缺少了一个抛出异常的[Activity]属性。 CameraView的类定义应为。

[Activity(Label="View for CameraViewModel")]
public class CameraView : MvxActivity
{
    ...
}

而不是

public class CameraView : MvxActivity
{
    ...
}

我最初想过要将整个问题从尴尬中删除,但我决定回答这个问题并将其留给其他可能在自己的代码中遇到这种情况的人。