Wpf 当MenuItem具有自定义控件模板且在单独的XAML文件中定义时,如何将其与子MenuItems一起使用?

Wpf 当MenuItem具有自定义控件模板且在单独的XAML文件中定义时,如何将其与子MenuItems一起使用?,wpf,xaml,menuitem,controltemplate,visual-studio-2019,Wpf,Xaml,Menuitem,Controltemplate,Visual Studio 2019,我在菜单中有一个菜单项,它的右侧有时会显示一个时间跨度(时间跨度会一秒一秒地减小)。为了进行此更改,我创建了一个新的MenuItem子类XAML文件。在其中,我将MenuItem的Template属性设置为Visual Studio在单击编辑模板>编辑副本时自动创建的模板。。。在设计器中菜单项的关联菜单中。设置此模板时,直接在新XAML文件中的MenuItem.Items属性中设置的子项不会显示,就像没有添加任何子菜单项一样。我希望使用在XAML中定义的模板,同时也有子项 我试图不将子菜单项放

我在菜单中有一个菜单项,它的右侧有时会显示一个时间跨度(时间跨度会一秒一秒地减小)。为了进行此更改,我创建了一个新的MenuItem子类XAML文件。在其中,我将MenuItem的Template属性设置为Visual Studio在单击编辑模板>编辑副本时自动创建的模板。。。在设计器中菜单项的关联菜单中。设置此模板时,直接在新XAML文件中的MenuItem.Items属性中设置的子项不会显示,就像没有添加任何子菜单项一样。我希望使用在XAML中定义的模板,同时也有子项

我试图不将子菜单项放在新的XAML文件中,而是直接放在MainWindow.XAML中,但我已经到达了

我还用谷歌搜索了“wpf菜单项模板和子项”,但没有成功

在MainWindow.xaml中:


以及
KeepOnTopMenuItem.xaml中的所有标记:


预期结果是显示子菜单项,实际结果是KeepOnTopMenuItem显示为没有子项


我不知道下一步该怎么办。如何将自定义菜单项模板与子项一起使用?

编辑模板->编辑副本无法提供正确的模板

如果您使用反编译器,如并打开
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\PresentationFramework.Aero2.dll
,您将在
themes/Aero2.normalcolor.baml
中找到默认模板

如果查看
菜单项
模板,您会发现它根据
角色
属性的值应用了不同的
控制模板

<Style.Triggers>
    <Trigger Property="MenuItem.Role" Value="TopLevelHeader">
        <Setter Property="Control.Template"
                Value="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type MenuItem}, ResourceId=TopLevelHeaderTemplateKey}}"/>
        <Setter Property="Control.Padding" Value="6,0"/>
    </Trigger>
    <Trigger Property="MenuItem.Role" Value="TopLevelItem">
        <Setter Property="Control.Template"
                Value="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type MenuItem}, ResourceId=TopLevelItemTemplateKey}}"/>
        <Setter Property="Control.Padding" Value="6,0"/>
    </Trigger>
    <Trigger Property="MenuItem.Role" Value="SubmenuHeader">
        <Setter Property="Control.Template"
                Value="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type MenuItem}, ResourceId=SubmenuHeaderTemplateKey}}"/>
    </Trigger>
</Style.Triggers>

为了不破坏默认行为,您应该自定义这些模板之一