我有以下内容
主视图
与MVVM菜单切换器一起工作良好的文件。我有这双:
-
第1页视图/第1页视图模型
-
page2view/page2view模型
在我的
主视图模型
我用两个视图模型填充一个可观察的集合,然后当用户单击
接下来
按钮,它调用
下一页页
在主视图模型中,关闭
当前页面视图模型
有了一个新的视图模型,然后用一个合适的视图显示,工作得很好。
我也有一个菜单,里面充满了可见集合中视图模型的所有标题,这也很好地工作。
但是,每个菜单项都有一个命令=“binding switchpagecommand”,它应该在
主视图模型
而不是在
PGE1VIEW模型
或
PaG2VIEW模型
.
那么,我如何在模板中指示不绑定到当前的ViewModel,而是绑定到
包含
该视图模型,例如:
PSEUDO-CODE:
<DataTemplate x:Key="CodeGenerationMenuTemplate">
<MenuItem
Command="{Binding <parentViewModel>.SwitchPageCommand}"
Header="{Binding Title}"
CommandParameter="{Binding Title}"/>
</DataTemplate>
这里是
主视图模型
:
<Window x:Class="TestMenu234.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:TestMenu234.Commands"
xmlns:vm="clr-namespace:TestMenu234.ViewModels"
xmlns:v="clr-namespace:TestMenu234.Views"
Title="Main Window" Height="400" Width="800">
<Window.Resources>
<DataTemplate x:Key="CodeGenerationMenuTemplate">
<MenuItem Header="{Binding Title}" Command="{Binding SwitchPageCommand}" CommandParameter="{Binding Title}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:Page1ViewModel}">
<v:Page1View/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:Page2ViewModel}">
<v:Page2View/>
</DataTemplate>
</Window.Resources>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="Code _Generation" ItemsSource="{Binding AllPageViewModels}"
ItemTemplate="{StaticResource CodeGenerationMenuTemplate}"/>
</Menu>
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
<Button Margin="5" Content="Next Page" Command="{Binding NextPageCommand}"/>
</StackPanel>
<ContentControl
Content="{Binding CurrentPageViewModel}"/>
</DockPanel>
</Window>