У меня есть элемент управления TreeView
в моем окне, который в зависимости от того, какой выбор пользователь выбрал, должен отображать пользовательский элемент управления (выяснение, какой пользовательский элемент управления для отображения завершен). У меня проблемы с выяснением, как на самом деле отображать пользовательский элемент управления. По сути, пользователь выбирает элемент из TreeView
, и в зависимости от выбора появится пользовательский элемент управления (в элементе управления ContentControl
, который я предполагаю).
В настоящее время для открытия новых окон у меня есть оконный адаптер, где я могу на лету создавать новые окна и устанавливать родителя.
Как я могу сделать это в моей модели представления?
Редактировать
Вот то, о чем я полагаю, Рэйчел говорила, когда упоминала, что вместо нее использовали DataTemplate
. Не беспокойтесь о моем DataTemplates
вместо атрибута DataType
. Это просто название моего проекта.
<Window.Resources>
<DataTemplate DataType="{x:Type DataTemplates:FooEditorViewModel}">
<DataTemplates:FooControl></DataTemplates:FooControl>
</DataTemplate>
<DataTemplate DataType="{x:Type DataTemplates:BarEditorViewModel}">
<DataTemplates:BarControl></DataTemplates:BarControl>
</DataTemplate>
</Window.Resources>
А вот пример модели вида.
public class ViewModel
{
public IEditorViewModel Editor
{
get
{
return new BarEditorViewModel();
}
}
}
И склеить все это вместе с
<ContentControl Content="{Binding Editor}" />
Мне пришлось создать пустой интерфейс с именем IEditorViewModel
, чтобы вернуть разные пользовательские редакторы управления. Не уверен, есть ли способ обойти это.
Надеется, это кому-нибудь поможет.