我有一个具有ItemContainerStyle
的菜单<Menu DockPanel.Dock="Top" ItemContainerStyle="{StaticResource MenuItemStyle}" ItemsSource="{Binding MenuItems}">
这个特殊的ItemContainerStyle有一个像How can I bind key gestures in Caliburn.Micro?
中定义的触发器<Style TargetType="{x:Type MenuItem}" x:Key="MenuItemStyle" BasedOn="{StaticResource {x:Type MenuItem}}">
[...]
<Setter Property="int:InteractivityItems.Template">
<Setter.Value>
<int:InteractivityTemplate>
<int:InteractivityItems>
<int:InteractivityItems.Triggers>
<triggers:InputBindingTrigger InputBinding="{Binding Shortcut, Converter={StaticResource StringToKeyBinding}}">
<cal:ActionMessage MethodName="Execute"/>
</triggers:InputBindingTrigger>
</int:InteractivityItems.Triggers>
</int:InteractivityItems>
</int:InteractivityTemplate>
</Setter.Value>
</Setter>
[...]
我面临的问题是,只有在我打开菜单而不是创建菜单时才会将此触发器附加到菜单项子项,因此除了打开然后关闭菜单之外,thr InputBindingTrigger不起作用。
在创建菜单而不是打开菜单时,有没有办法强制应用ItemContainerStyle?