Этот материал MVVM причиняет мне боль. У меня есть приложение, которое имеет список редакторов в левой панели. Справа находится элемент управления вкладкой, в котором будут отображаться редакторы. У меня есть модель основного приложения, содержащая коллекцию моделей представлений. Я называю эту коллекцию Workspaces. Это заимствовано у MvvmDemoApp, которое Microsoft предоставляет here.Как установить шаблон представления/просмотра модели данных во время выполнения?
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}"/>
Модели ракурса связаны с тем, используя DataTemplates как так:
<DataTemplate DataType="{x:Type vm:MessageLogViewModel}">
<vw:MessageLogView/>
</DataTemplate>
Это прекрасно работает. Однако теперь мне нужно настроить приложение, когда список редакторов читается из файла конфигурации. Я предполагаю, что этот файл конфигурации будет содержать компоненты представления и представления для каждого редактора. Но как мне связать их вместе, чтобы, когда кто-то привязывается к модели представления (или коллекции моделей представлений), отображается правильное представление (похожее на то, что делает DataTemplate, а не на код, а не на XAML)?
Я стараюсь держаться подальше от методов инверсии управления (IoC). Я не уверен, что наша команда готова к этому.
Вы можете уточнить? Кто будет привязан к свойству Data Template? – bsh152s
@ bsh152s: Надеемся, что редактирование даст вам еще несколько указателей. –