Я уверен, что мне не хватает чего-то простого (все еще немного зеленого в этом материале mvvm), но я подумал, что использование ViewModelLocator избавило от необходимости привязки представления DataTemplate к viewmodel. Но мне почему-то это все еще нужно.
В приложении WPF у меня есть окно, единственным содержимым которого является шаблон содержимого, который привязывается к привязке по умолчанию.
<Window ... DataContext="{Binding MainView, Source={StaticResource Locator}}">
<grid><ContentControl Content="{Binding}"/></grid>
У меня тогда есть UserControl, который, я думаю, вы могли бы назвать реальным представлением - viewmodel.
<UserControl ...
DataContext="{Binding MainView, Source={StaticResource Locator}}">
...xaml...
</UserControl>
Что я заметил, так это то, что если я не помещу DataTemplate, который связывает view - viewmodel (в данном случае MainView) в App.xaml, я просто получу имя класса.
Поскольку текстовый текст окна связан с помощью локатора, я подумал, что это сработает. Я предполагаю, что дополнительный слой в окне, использующий ContentControl, сбивает с толку.
Если я заменю ContentControl с прямой ссылкой на представление, т. Е.
<view:MainView />
Это тоже работает. Итак, я думаю, у меня есть два вопроса:
1. Почему переплет не понимает этого?
2. Есть ли способ заставить это работать, используя локатор? Я хотел бы иметь окно с минимальным пользовательским интерфейсом и сохранить объем в UserControls.
Спасибо за любую информацию.
Карымский