我有一个遵循MVVM的WPF应用程序。我能够设计单独的窗口,但是如何在同一主窗口中的不同视图之间导航,而不是在不同的窗口中启动每个视图。 对于前 - 考虑,我有2个观点。 Window1.xaml和Window2.xaml。考虑第三个视图CommonWindow.xaml。现在,在这个CommonWindow.xaml中,我想提供一个切换按钮。当我单击此按钮时,它应该在CommonWindow.xaml中交替加载Window1和Window2。 我怎样才能做到这一点? WPF中是否有任何支持这种行为的特定控件?
答案 0 :(得分:1)
为什么不让视图窗口控件并将它们放在公共窗口的TabControl
中,而不是使用按钮在容器窗口内的视窗之间切换? XAML看起来像这样:
<TabControl>
<TabItem>
<local:MyView1>
</TabItem>
<TabItem>
<local:MyView2>
</TabItem>
</TabControl>
答案 1 :(得分:0)
答案 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>