Jak mogę powiedzieć mojemu DataTemplate, aby związał się z właściwością w PARENT ViewModel?

Mam następująceMainView.xaml plik, który działa dobrze jako przełącznik menu MVVM. Mam te pary:

Page1View / Page1ViewModelPage2View / Page2ViewModel

w moimMainViewModel Wypełniam ObservableCollection zarówno ViewModels, a następnie, gdy użytkownik kliknieKolejny przycisk, to dzwoniNextPageCommand w MainViewModel, który się wyłączaCurrentPageViewModel z nowym ViewModel, który jest następnie wyświetlany z odpowiednim widokiem, działa dobrze.

Mam też menu wypełnione wszystkimi tytułami z ViewModels w kolekcji Observable, które również działają dobrze.

Jednak każdy MenuItem ma Command = "{Binding SwitchPageCommand}", który POWINIEN wywoływać SwitchPageCommand naMainViewModel a nie na przykładPage1ViewModel lubPage2ViewModel.

Więc jak mogę wskazać w szablonie, aby nie wiązać się z bieżącym ViewModel, ale ViewModel, któryzawiera ten ViewModel, np. coś takiego:

<code>PSEUDO-CODE:

<DataTemplate x:Key="CodeGenerationMenuTemplate">
    <MenuItem 
        Command="{Binding <parentViewModel>.SwitchPageCommand}" 
        Header="{Binding Title}" 
        CommandParameter="{Binding Title}"/>
</DataTemplate>
</code>

Tutaj jestMainViewModel:

<code><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>
</code>

questionAnswers(1)

yourAnswerToTheQuestion