仅当鼠标直接位于MenuItem上时才提供工具提示

时间:2018-02-01 10:51:00

标签: c# wpf

如何在ContextMenu中为MenuItem提供工具提示,只有当鼠标位于实际的MenuItem而不是其弹出子菜单上时才会出现?最好不必为子菜单中的每个项目设置属性或样式。

    <Button Content="Push">
        <Button.ContextMenu>
            <ContextMenu>
                <MenuItem ToolTip="ToolTip" Header="Want ToolTip Here" ToolTipService.InitialShowDelay="5000">
                    <MenuItem Header="Do Not Want ToolTip Here"/>
                    <MenuItem Header="Or Here"/>
                    <MenuItem Header="Or Here"/>
                </MenuItem>
            </ContextMenu>
        </Button.ContextMenu>
    </Button>

以下是该问题的屏幕截图:如果我右键单击该按钮,打开子菜单并将鼠标移动到其中一个子项,我将鼠标移到主菜单项后5秒仍显示工具提示

ToolTip Trouble

1 个答案:

答案 0 :(得分:0)

只需在下面的事件处理程序中注册ToolTipOpening事件。

private void MenuItem_ToolTipOpening(object sender, ToolTipEventArgs e)
{
    FrameworkElement element = (FrameworkElement)sender;
    Point p = Mouse.GetPosition(element);

    if (p.X < 0 || p.X > element.ActualWidth || p.Y < 0 || p.Y > element.ActualHeight)
    {
        e.Handled = true;
    }
}