Этот материал MVVM делает мою голову болит. У меня есть приложение, которое имеет список редакторов в левой панели. Справа находится вкладка управления, где будут отображаться редакторы. У меня есть основная модель представления приложения, которая содержит коллекцию моделей представления. Я называю эту коллекцию Workspaces. Это заимствовано из MvvmDemoApp, который Microsoft предоставляет здесь .
public ObservableCollection<WorkspaceViewModel> Workspaces
{
get
{
...
}
}
Эти рабочие пространства связаны с элементом управления вкладкой в главном окне приложения следующим образом:
<DataTemplate x:Key "WorkspacesTemplate">
<TabControl
IsSynchonizedWithCurrentItem="True"
ItemSource="{Binding Workspaces}"
SelectedItem="{Binding ActiveWorkspace}"/>
</DataTemplate>
...
<ContentControl
Content="{Binding}"
ContentTemplate="{StaticResource WorkspacesTemplate}"/>
Модели представлений привязаны к представлению с использованием шаблонов данных, например:
<DataTemplate DataType="{x:Type vm:MessageLogViewModel}">
<vw:MessageLogView/>
</DataTemplate>
Это отлично работает. Однако теперь мне нужно настроить приложение так, чтобы список редакторов читался из файла конфигурации. Я предполагаю, что этот файл конфигурации будет содержать компоненты вида и вида для каждого редактора. Но как мне связать их вместе, чтобы, когда кто-то связывался с моделью представления (или набором моделей представления), отображалось правильное представление (аналогично тому, что делает DataTemplate, но в коде, а не в XAML)?
Я пытаюсь держаться подальше от методов инверсии контроля (IoC). Я не уверен, что наша команда готова к этому искушению.