2013-03-18 61 views
0

这是我第一次在StackOverflow中发布一些东西(它在过去帮助过我很多),通常我都不会必须发布一个问题,因为我的假设问题已经得到了回答。但是这个我真的找不到合适的解释。无论何时初始化其他程序集中的模型实例,都无法创建ViewModelLocator的实例

所以我在修补C#,Entity Framework 4,WPF和MVVM Light。我已经制作了一个程序集,作为各种模型,视图和视图模型的库,用于特定目的。

现在我正在制作另一个用于不同目的的组件。但是,在第一个程序集中已经提供了一些必需的方法和视图。所以我想我要将第一个程序集的引用添加到第二个程序集,然后从第一个程序集创建Model的实例到第二个程序集的Model或ViewModel。

一切都没有错误的构建。但是,当我检查了第二组件的视图的设计视图,这部分有锯齿状下划线:

<UserControl.Resources> 
    <vm:ViewModelLocator x:Key="Locator" /> 
</UserControl.Resources> 

,当你看设计图,还有在与文本顶部栏写的错误:

Object reference not set to an instance of an object. 
    at Powell.Materials.Common.ViewModel.MaterialsViewViewModel.SetupLists() in E:\Projects\Software\Powell Marketing\Powell\Powell\Materials\Powell.Materials.Common\ViewModel\MaterialsViewViewModel.cs:line 514 
    at Powell.Materials.Common.ViewModel.MaterialsViewViewModel..ctor() in E:\Projects\Software\Powell Marketing\Powell\Powell\Materials\Powell.Materials.Common\ViewModel\MaterialsViewViewModel.cs:line 601 

有人遇到过这种类型的错误吗?或者有没有一种合适的方式来做这种事情?

+0

你可以发布'MaterialsViewViewModel.SetupLists()'吗?我很确定,那个错误可以在那里找到。 – DHN 2013-03-18 08:34:48

+0

'private void SetupLists() { Retrieve retrieve = new Retrieve(secretKey,IDUser,connectionName); unitListProperty = retrieve.RetrieveUnits(); matlTypeProperty = retrieve.RetrieveMaterialTypes(); supplierListProperty = retrieve.RetrieveSuppliers(); }' 它在自己的Model中调用一个方法,该方法与引用程序集中的Model进行通信。 – 2013-03-18 08:51:54

回答

0

那么在代码中,我看到4个可能的来源NullReferenceException

  • secretKey
  • IDUser
  • connectionName
  • retrieve(虽然这可能是正确实例)

我不知道从哪儿来的前三。所以检查它们的值。我很确定其中有一个是null。如果所有三个都正确实例化,请检查最后一个。

+0

它们在程序运行时立即实例化。但现在你已经提到过了,我想我应该为每个声明一个默认值。非常感谢:D – 2013-03-18 09:21:49