Было бы действительно легко реализовать этот senario, используя подход MVVM ....
Сделайте ViewModel для вас MainView.Затем определите свойства ViewModels ваших UserControls
. Например, у вас есть два UserControl как FirstView
и SecondView
, затем создайте свойства в ваших viewmodels как ViewToLoadProperty
типа ViewModel (обычно называемый ViewModelBase)
Установить привязки как
<!-- Panel For Hosting UserControls -->
<Border Grid.Column="2">
<ContentControl Name="userControlContentControl"
Content="{Binding Path=ViewToLoadProperty,
}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type ViewModelLayer:FirstViewModel}">
<ViewLayer:FirstView/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModelLayer:SecondViewModel}">
<ViewLayer:SecondView />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</Border>
<!-- Panel For Hosting UserControls -->
Затем, когда вы нажимаете кнопку Используйте команду, чтобы установить соответствующий Интервал ViewModel для этого свойства (ViewToLoadProperty) ... (Использовать RelayCommannds
или что-то подобноеэто)
DataTempates
выполнит оставшуюся часть работы, выбрав правильный вид в соответствии с правильным типом ViewModel
Вы можете использовать MVVMLight toolkit, если вы реализуете MVVM Pattern ..:)