Присвоение представления ContentControl в MVVM

У меня есть набор ViewModel каждый представляет особенность, и каждая ViewModel связана с View. И у меня есть MainWindow в котором я должен отображать представление как и когда создается связанная с ним модель представления. Как это сделать?

MainWindow.xaml

<FlowLayoutControl>
    <ContentControl Name="MainScreen">
    </ContentControl>
</FlowLayoutControl>   

У меня есть vieModel Test1 и Test2, каждый из которых имеет свою собственную таблицу данных. Теперь я хочу установить ContentControl к одной из моделей, когда мне это нужно. Как мне это сделать?

1 ответ

Если твой DataTemplate в ресурсах выглядит так:

<DataTemplate DataType="{x:Type local:ViewModel}">
...

Когда вам нужно использовать ContentControl как:

<ContentControl Name="MyContent">            
    <local:ViewModel /> <!-- Your ViewModel here -->
</ContentControl>

Это означает, что DataTemplate будет использоваться явно для всех элементов управления этого типа.

Если для вашего DataTemplate задавать x:Key:

<DataTemplate x:Key="MyTemplate" DataType="{x:Type local:ViewModel}">
...

Когда вам нужно использовать ContentControl как это:

<ContentControl Name="MyContent"  
                ContentTemplate="{StaticResource MyTemplate}">

    <local:ViewModel /> <!-- Your ViewModel here -->
</ContentControl>
Другие вопросы по тегам