我有一个简单的弹出控件,其中包含多个MenuItem
。
<Popup
IsOpen="{Binding ShowPopupMenu}"
<StackPanel Background="White">
<ItemsControl>
<MenuItem Header="Open file..." />
<MenuItem Header="Settings" />
<!-- Nested items -->
<MenuItem Header="Test">
<MenuItem Header="Nested Item" />
<MenuItem Header="Nested Item" />
<MenuItem Header="Nested Item" />
<MenuItem Header="Nested Item" />
<MenuItem Header="Nested Item" />
</MenuItem>
<MenuItem Header="Exit" />
</ItemsControl>
</StackPanel>
</Popup>
我的问题是,标题为MenuItem
的{{1}}包含嵌套的子项,鼠标悬停时无法展开。
我实际上可以看到它在设计时不断扩展
但是,当它根本无法在运行时上运行时。
有什么想法吗?
答案 0 :(得分:0)
问题似乎出在Popup控件处理鼠标单击事件,因此,它没有到达菜单项,请尝试通过处理PreviewLeftButton
事件来手动打开它:
<StackPanel x:Name="Panel">
<Popup PlacementTarget="{Binding ElementName=Panel}"
IsOpen="True">
<StackPanel Background="White">
<!--<Menu>-->
<MenuItem Header="Open file..." />
<MenuItem Header="Settings" />
<!-- Nested items -->
<MenuItem Header="Test" Click="MenuItem_OnClick" PreviewMouseLeftButtonDown="UIElement_OnPreviewMouseLeftButtonDown">
<MenuItem Header="Nested Item" />
<MenuItem Header="Nested Item" />
<MenuItem Header="Nested Item" />
<MenuItem Header="Nested Item" />
<MenuItem Header="Nested Item" />
</MenuItem>
<MenuItem Header="Exit" />
<!--</Menu>-->
</StackPanel>
</Popup>
</StackPanel>
并且:
private void UIElement_OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
((MenuItem)sender).IsSubmenuOpen = true;
}
编辑
我的错误,问题与未处理Click事件无关。我只是在堆栈面板上放了一个按钮就可以了。问题在于,当MenuItem具有子项时,如果根菜单项不是Menu
或ContextMenu
的“子级”,则不会触发click事件,并且必须手动处理子菜单的状态。控制。这些控件已经处理了,但是由于您正在实现自己的“ ContextMenu”,因此您必须自己实现该行为
答案 1 :(得分:0)
您可以将window.dataLayer = window.dataLayer || [];
与event: 'eec.purchase'
一起使用,以将Style
属性设置为Trigger
:
IsSubmenuOpen