2012-01-25 70 views
0

我们是否必须为所有ViewModel创建不同ViewModel的唯一ViewModelLocator或唯一一个ViewModelLocator。因为当我尝试通过为所有ViewModel设置属性来使用唯一一个ViewModelLocator时 - 它在Cache中给出了Error-Type Not Found。所以我不能使用该viewmodel,除非我将该viewModel设置为默认值。任何人都可以请帮助我确定我要去哪里错?我们是否需要为每个ViewModel创建induvidual ViewModelLocators?

+1

为了帮助您,我们需要看到至少代码视图模型定位器解决它。然而,从你写的内容来看,我假设你使用了某种IoC容器,并且你正在寻找的类型不在这个容器中......但这只是一个非常疯狂的猜测! – AxelEckenberger

回答

3

你只需要一个ViewModelLocator,需要类似这样的设置:

你应该有一个ViewModelLocator.cs。

有它初始化在你的App.xaml:

<Application.Resources> 
    <ResourceDictionary> 
     <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" /> 
    </ResourceDictionary> 
</Application.Resources> 

而且你的观点,并应在每一页的根DataContext的呼唤你的ViewModelLocator:

<phone:PhoneApplicationPage DataContext="{Binding MenuViewModel, Source={StaticResource Locator}}" .../> 
+0

我已经设置它像这样 –

+1

我找到了解决方案 - >每次我使用mvvmlocator片段时,它会生成一个新的静态构造函数,我用它来删除并最终遇到以上错误,因为我没有注册SimpleIoc的ViewModel属性。我在默认构造函数中完成了,问题是已解决。 –

0

当我像使用MVVM Toolkit一样在Windows 8商店应用程序中导致此错误,并且在我的viewmodel的构造函数中使用了SimpleIoc容器解析类型。这导致设计时体验显示您描述的错误。

我通过检查,如果我是在设计时和不执行代码,如果我是

相关问题