改变主要观察区域

时间:2012-01-10 19:07:03

标签: c# wpf contentcontrol

我想知道如何在按下按钮时在主窗口中创建不同的视图。我不确定正确的术语,因此这妨碍了我的谷歌。

我认为主要的观看区域是内容控件,我可以在事件发生时更改。我画了一张小图来帮助说明我的想法/想法。

任何输入将不胜感激。谢谢! Crude Mockup

2 个答案:

答案 0 :(得分:5)

使用MVVM方法实现这个Senario真的很容易....

为您制作ViewModel MainView。然后定义UserControls的ViewModel的属性

例如,您有两个UserControl为FirstViewSecondView,然后在您的视图模型中将属性设置为ViewModel类型的ViewToLoadProperty(通常称为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 Intance设置为此(ViewToLoadProperty)属性...(使用RelayCommannds或类似的东西)

DataTempates将根据正确的ViewModel类型选择正确的视图完成剩下的工作

如果你正在实现MVVM模式,你可以使用MVVMLight工具包.. :)

答案 1 :(得分:2)

在右边你可以有一个框架。然后该按钮会将不同的页面或用户控件绑定到该帧的内容。