我可以在点击时打开子菜单菜单,而不是在c#(WPF)中鼠标悬停吗?

时间:2014-07-22 10:37:22

标签: c# wpf menuitem

我有一个由3级menuitem组成的菜单,第一级仅在点击时打开其子菜单,第二个子菜单级别在鼠标结束时打开其子菜单,我会更改此行为,以获取仅打开的子菜单其子菜单点击

2 个答案:

答案 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)

    <{1}}的{​​li>

    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>
相关问题