Вы должны внести незначительные изменения -
Сначала в вашем окне.Попробуйте это:
<Window>
<!-- setup window... -->
<ContentPresenter>
<ContentPresenter.Content>
<vm:MainViewModel/>
</ContentPresenter.Content>
</ContentPresenter>
</Window>
Это создает один элемент контента в вашем окне.DataTemplates работают, сопоставляя content с новым View - в этом случае, поскольку здесь Content - это MainViewModel
, он автоматически создаст и создаст для вас новый MainView
.Установка DataContext
не вызовет DataTemplates
, так как вы никогда не делаете ViewModel "контентом" объекта.
Вы можете сократить это, просто установив непосредственно содержимое окна, если вы предпочитаете:
<Window>
<Window.Content>
<vm:MainViewModel/>
</Window.Content>
</Window>
Или даже привязать Контент к DataContext
(хотя это имеет смысл, только если вам нужен набор DataContext
для каких-то других целей):
<Window Content="{Binding}">
<Window.DataContext>
<vm:MainViewModel/>
</Window.DataContext>
</Window>