Как динамически подключить ViewModels к соответствующим им представлениям? - PullRequest
1 голос
/ 22 июня 2009

У меня есть приложение WPF, которое имеет MainView.xaml окно, которое загружает многочисленные объекты страницы во время выполнения, загружает их в ViewModels и отображает их динамически в меню .

Моя MainViewModel имеет ObservableCollection из ViewModels , и я связываю их с соответствующими Представлениями в файле MainView.xaml.

Однако, есть ли способ автоматизировать , чтобы мне не приходилось вводить эти записи вручную каждый раз, когда я добавляю страницу?

<Window.Resources>

    <DataTemplate DataType="{x:Type vm:PageItemManageCustomersViewModel}">
        <v:PageItemManageCustomersView/>
    </DataTemplate>

    <DataTemplate DataType="{x:Type vm:PageItemManageEmployeesViewModel}">
        <v:PageItemManageEmployeesView/>
    </DataTemplate>

    <DataTemplate DataType="{x:Type vm:PageItemReportsViewModel}">
        <v:PageItemReportsView/>
    </DataTemplate>

</Window.Resources>

Разве это не то, что " ServiceLocator " или " Container " должен делать, подключая View к ViewModels? Я читал, что вышеприведенное - это общий способ для сопоставления ViewModels и Views в шаблоне MVVM, но для меня это выглядит как bit static . Буду признателен за любые мысли.

1 Ответ

0 голосов
/ 25 июня 2009

Другой вариант - использовать класс для разрешения ViewModels на основе некоторого ключа. Затем вы можете использовать это в главном представлении для определения правильной модели представления для ваших элементов управления.

public static class ViewModelFactory
{
 public ViewModelBase Create(string someKeyHere)
 {
    //Some logic to resolve a view model
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...