在WPF中导航到同一窗口中的不同视图

时间:2015-07-15 17:43:08

标签: wpf xaml mvvm

我有一个遵循MVVM的WPF应用程序。我能够设计单独的窗口,但是如何在同一主窗口中的不同视图之间导航,而不是在不同的窗口中启动每个视图。 对于前 - 考虑,我有2个观点。 Window1.xaml和Window2.xaml。考虑第三个视图CommonWindow.xaml。现在,在这个CommonWindow.xaml中,我想提供一个切换按钮。当我单击此按钮时,它应该在CommonWindow.xaml中交替加载Window1和Window2。 我怎样才能做到这一点? WPF中是否有任何支持这种行为的特定控件?

3 个答案:

答案 0 :(得分:1)

为什么不让视图窗口控件并将它们放在公共窗口的TabControl中,而不是使用按钮在容器窗口内的视窗之间切换? XAML看起来像这样:

<TabControl>

    <TabItem>
        <local:MyView1>
    </TabItem>

    <TabItem>
        <local:MyView2>
    </TabItem>
</TabControl>

答案 1 :(得分:0)

您可以使用TabControl或Page控件。

MVVM-TabControl

Closeable-TabItems

答案 2 :(得分:0)

您可以将ViewModel绑定到ContentControl并为每个ViewModel添加一些DataTemplate。

<Window ...
        xmlns:view="clr-namespace:SO31437431.View"
        xmlns:viewmodel="clr-namespace:SO31437431.ViewModel"
        ...>

    <Grid>

        <ContentControl Content="{Binding CurrentItem}">
            <ContentControl.Resources>

                <DataTemplate DataType="{x:Type viewmodel:BarViewModel}">
                    <view:BarView/>
                </DataTemplate>

                <DataTemplate DataType="{x:Type viewmodel:FooViewModel}">
                    <view:FooView/>
                </DataTemplate>

            </ContentControl.Resources>
        </ContentControl>
    </Grid>
</Window>