Wpf 当MenuItem具有自定义控件模板且在单独的XAML文件中定义时,如何将其与子MenuItems一起使用?
我在菜单中有一个菜单项,它的右侧有时会显示一个时间跨度(时间跨度会一秒一秒地减小)。为了进行此更改,我创建了一个新的MenuItem子类XAML文件。在其中,我将MenuItem的Template属性设置为Visual Studio在单击编辑模板>编辑副本时自动创建的模板。。。在设计器中菜单项的关联菜单中。设置此模板时,直接在新XAML文件中的MenuItem.Items属性中设置的子项不会显示,就像没有添加任何子菜单项一样。我希望使用在XAML中定义的模板,同时也有子项 我试图不将子菜单项放在新的XAML文件中,而是直接放在MainWindow.XAML中,但我已经到达了 我还用谷歌搜索了“wpf菜单项模板和子项”,但没有成功 在MainWindow.xaml中: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中定义的模板,同时也有子项 我试图不将子菜单项放
以及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>
为了不破坏默认行为,您应该自定义这些模板之一