Binding ViewModel to ContentControl as its DataContext

c#, mvvm, wpf

Solution

If your `Window.DataContext` is properly set to `MainWindowViewModel` this should do the job

<ContentControl Content="{Binding UserControlViewModel}" />

Problem

I want to change UserControls on button clicks (I'm not going to complicate here, so I'll only mention important parts). So idea was to bind ViewModels of those UserControls to ContentControl, and than associate them Views using DataTemplates. Here's the code: ``` <Window x:Class="Project.MainWindow"> <Window.Resources> <DataTemplate DataType="{x:Type UserControl:ViewUserControlViewModel}" > <UserControl:ViewUserControl/> </DataTemplate> <DataTemplate DataType="{x:Type UserControl:EditUserControlViewModel}" > <UserControl:EditUserControl/> </DataTemplate> </Window.Resources> <Grid> <ContentControl DataContext="{Binding UserControlViewModel}" /> <Button Content="View" Click="ChangeToView()"/> <Button Content="Edit" Click="ChangeToEdit()"/> </Grid> </Window> ``` ViewModel: ``` public class MainWindowViewModel : DependencyObject { public DependencyObject UserControlViewModel { get { return (DependencyObject)GetValue(UserControlViewModelProperty); } set { SetValue(UserControlViewModelProperty, value); } } public static readonly DependencyProperty UserControlViewModelProperty = DependencyProperty.Register("UserControlViewModel", typeof(DependencyObject), typeof(MainWindowViewModel), new PropertyMetadata()); public MainWindowViewModel() { UserControlViewModel = new EditUserControlViewModel(); } } ``` But theres a problem. When I start project, I only see buttons but not any UserControls. What did I do wrong?

Original source