首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改默认菜单(项)鼠标反应

更改默认菜单(项)鼠标反应
EN

Stack Overflow用户
提问于 2010-05-27 23:51:59
回答 1查看 401关注 0票数 0

我正在制作一个定制菜单,带有定制的菜单项。更改控件模板和样式已经开始了,但现在我想要更改鼠标事件影响menuItems可见性的方式。

默认情况下,当您单击父菜单项的弹出窗口中的MenuItem时,弹出窗口将会折叠。当鼠标离开时,弹出窗口将保持打开状态。我想反转这一点,以便只有当鼠标离开时弹出窗口才会折叠,并且一个子菜单项可以连续单击多次。

这是可能的吗?如果是这样,我怎么能做到这一点呢?

欢迎提供给我更多洞察力或解决方案的任何信息!

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2010-05-28 00:41:31

使用menuitems上的StaysOpenOnClick属性可在单击时保持菜单打开。

当菜单失去焦点时,它会关闭,这对我来说很好。如果您想要在鼠标不再位于菜单上时自动关闭菜单,则需要在后台代码中执行此操作。下面的代码通过检查鼠标何时位于上下文菜单区域之外来为主菜单执行此操作。它只适用于没有子菜单的菜单。如果你想使用子菜单,你需要弄清楚鼠标什么时候在一个子菜单上,什么时候不在。

代码语言:javascript
运行
复制
<Window x:Class="MenuTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300" Width="300">
    <Grid Background="Red">
        <Grid.ContextMenu>
            <ContextMenu MouseMove="ContextMenu_MouseMove">
                <MenuItem Header="Menu Item" StaysOpenOnClick="True" />
                <MenuItem Header="Menu Item" StaysOpenOnClick="True" />
                <MenuItem Header="SubMenu">
                    <MenuItem Header="Menu Item" StaysOpenOnClick="True" />
                </MenuItem>
            </ContextMenu>
        </Grid.ContextMenu>
    </Grid>
</Window>

事件处理程序:

代码语言:javascript
运行
复制
private void ContextMenu_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
    ContextMenu contextMenu = sender as ContextMenu;
    Point p = e.GetPosition(contextMenu);
    contextMenu.IsOpen = p.X >= 0 && p.X <= contextMenu.ActualWidth && p.Y >= 0 && p.Y <= contextMenu.ActualHeight;
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2922658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档