Я считаю, что вам нужно изменить Conetnt на ContentControl
на основе выбора в другом элементе управления, например ListView
, ListBox
, TreeView
и т. Д.
Я сделал это так
<ContentControl Name="userControlContentControl"
Content="{Binding ElementName=YourListViewname,
Path=SelectedItem}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type ViewModelLayer:UserControl1ViewModel}">
<ViewLayer:UserControl1 DataContext={Binding}/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModelLayer:UserControl2ViewModel}">
<ViewLayer:UserControl2 DataContext={Binding} />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModellayer:UserControl3ViewModel}">
<ViewLayer:UserControl3 DataContext={Binding} />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModellayer:UserControl4ViewModel}">
<ViewLayer:UserControl4 DataContext={Binding} />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
В моей коллекции ListView ObservableCollection<ViewModelBase>
есть все экземпляры различных ViewModel
, упомянутых в XAML
Здесь сообщается шаблону данных, какой тип данных у вашего SelectedItem будет иметь ...
DataTempaltes автоматически выберет правильный вариант для вашего .... просто поместите правильное представление в правильный шаблон данных ...;)