我有一个由3级menuitem组成的菜单,第一级仅在点击时打开其子菜单,第二个子菜单级别在鼠标结束时打开其子菜单,我会更改此行为,以获取仅打开的子菜单其子菜单点击
答案 0 :(得分:0)
我不确定是否存在更好的解决方案。您可以尝试使用此代码来禁止子菜单在悬停时打开,并在单击时打开它:
//Suppose menu is the name of your Menu (or ContextMenu)
bool suppressOpen = true;
menu.AddHandler(MenuItem.SubmenuOpenedEvent, new RoutedEventHandler((s, e) =>
{
if (suppressOpen) ((MenuItem)e.Source).IsSubmenuOpen = false;
else suppressOpen = true;
}));
menu.AddHandler(MenuItem.PreviewMouseDownEvent,
new MouseButtonEventHandler((s, e) =>
{
suppressOpen = false;
((MenuItem)e.Source).IsSubmenuOpen = true;
}));
答案 1 :(得分:0)
php app/console assets:install web
由Opening / Closing
属性管理。
我们需要的是相应地更改submenu
的值,使其不会被覆盖。
我们知道MenuItem.IsSubmenuOpen
具有最高优先级。
要MenuItem.IsSubmenuOpen
其价值,我们需要提供Coercion
,为此,我们需要创建一个新的Coerce
控件和一个新的CoerceValueCallback
使用我们新的MenuItem
。
MenuOpenOnlyOnClick.xaml
Menu
MenuOpenOnlyOnClick.xaml.cs
MenuItem
用法的
<Menu
x:Class=" WpfStackOverflow.Controls.MenuOpenOnlyOnClick"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
</Menu>