Есть конфликт Window.DataContext и Window.Resource ObjectDataProvider - PullRequest
0 голосов
/ 09 декабря 2011

Мне все еще комфортно с WPF, так что это может быть глупый вопрос. Я отслеживаю источник проблемы с вкладками и обнаружил, что не знаю ответа на вопрос в заголовке.

Мой шаблон проекта Mvvm-Lite поместил обычный в открывающий тег Windows:

DataContext="{Binding Source={StaticResource Locator}, Path=Main}"

И откуда-то еще (я действительно не помню), у меня есть этот удобный статический ресурс:

<ObjectDataProvider x:Key="src" ObjectType="vm:MainViewModel" />

Пока я устранял проблему с моей системой управления вкладками (я не буду утомлять вас этими подробностями здесь), я понял, что не знаю, были ли эти два способа указания на модель представления каким-либо образом нарушены. Два отдельных экземпляра модели представления? Я так не думаю, потому что ViewModelLocator содержит статическую ссылку на Main. Во всяком случае, я просто хотел быть уверен, что я не сделал «зеленую» ошибку. Спасибо, Jim

1 Ответ

0 голосов
/ 09 декабря 2011

Я почти уверен, что это создаст два разных экземпляра.В этом можно легко убедиться, поместив точку останова в конструктор MainViewModel и запустив приложение в режиме отладки.

ObjectDataProvider был представлен до того, как MVVM стал популярным.Я бы сказал, что многие объекты в WPF отчасти устарели в MVVM, потому что теперь мы создаем эти объекты и свойства в коде на уровне ViewModel.В вашем случае, я полагаю, что вам, вероятно, не нужен ObjectDataProvider, но вместо этого вы можете использовать ViewModelLocator.Main везде.

Cheers, Laurent

...