Нужно ли нам создавать отдельные ViewModelLocators для каждой ViewModel? - PullRequest
0 голосов
/ 25 января 2012

Нужно ли нам создавать отдельный ViewModelLocator для другой ViewModel или только один ViewModelLocator для всех ViewModel.Потому что, когда я пытаюсь использовать только один ViewModelLocator, создавая свойства для всех ViewModels - это выдает Error - Type Not Found in Cache.поэтому я не могу использовать эту модель представления, пока я не установлю эту модель представления по умолчанию.Может кто-нибудь, пожалуйста, помогите мне определить, где я иду не так ??

Ответы [ 3 ]

3 голосов
/ 26 января 2012

Вам нужен только один ViewModelLocator и вам нужна установка, подобная этой:

У вас должен быть ViewModelLocator.cs.

Инициализируйте его в вашем App.xaml:

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

Кроме того, ваши Представления должны вызывать ваш ViewModelLocator в корневом DataContext каждой страницы:

<phone:PhoneApplicationPage DataContext="{Binding MenuViewModel, Source={StaticResource Locator}}" .../>
1 голос
/ 30 января 2012

Я нашел лучшее решение, и обходной путь MVVM-Light ViewModelLocator - использовать MEF Export. Ниже приводится хорошая ссылка от Johnpapa ... Чистое и простое решение. http://johnpapa.net/simple-viewmodel-locator-for-mvvm-the-patients-have-left-the-asylum

0 голосов
/ 02 октября 2012

Я вызвал эту ошибку в приложении магазина Windows 8, когда использовал MVVM Toolkit, как и вы, и в конструкторе моей viewmodel были типы разрешения контейнера SimpleIoc.Это заставило опыт разработки показать ошибку, которую вы описываете.

Я решил ее, проверив, был ли я во время разработки и не выполнил код, если я был

...