2012-01-25 104 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容器解析類型。這導致設計時體驗顯示您描述的錯誤。

我通過檢查,如果我是在設計時和不執行代碼,如果我是

相關問題