WPF 之 左键弹出操作菜单,并禁用右键菜单

  在目前的WPF版本中,很多的控件都有一个ContextMenu的属性,可以设置组件的右键菜单,这点确实是很方便,但是有些时候我们可能会需要当单击鼠标左键才弹出这个ContextMenu,而不是单击鼠标右键(即:当单击鼠标右键的时候不弹出该ContextMenu),这样我们就能很方便的实现类似Flex中设置弹出式菜单的效果。

  1、在前台加入一个带菜单的Button,如下:

<Button Name="btnMenu" Width="50" Height="25" Content="菜单" Initialized="btnMenu_Initialized">
    <Button.ContextMenu>
        <ContextMenu Name="contextMenu">
            <MenuItem Header="复制"/>
            <MenuItem Header="粘贴"/>
            <MenuItem Header="剪切"/>
            <MenuItem Header="删除"/>
        </ContextMenu>
    </Button.ContextMenu>
</Button>

  2、在后台,实现Initialized="btnMenu_Initialized",初始化右键菜单为null:

 private void btnMenu_Initialized(object sender, EventArgs e)
 {
     //设置右键菜单为null
     this.btnMenu.ContextMenu = null;
 }

  3、设置单击鼠标左键弹出菜单,如下:

private void btnMenu_Click(object sender, RoutedEventArgs e)
{
    //目标
    this.contextMenu.PlacementTarget = this.btnMenu;
    //位置
    this.contextMenu.Placement = PlacementMode.Top;
    //显示菜单
    this.contextMenu.IsOpen = true;
}
时间: 2024-10-27 12:25:47

WPF 之 左键弹出操作菜单,并禁用右键菜单的相关文章

[转]【C#】分享一个弹出浮动层,像右键菜单那样召即来挥则去

适用于:.net2.0+ Winform项目 背景: 有时候我们需要开一个简单的窗口来做一些事,例如输入一些东西.点选一个item之类的,可能像这样: 完了返回原窗体并获取刚刚的输入,这样做并没有什么问题,但在几天前我突然产生了一些想法:为什么非得有板有眼的弹出一个窗体给用户呢,是不是可以在按钮附近迅速呈现一个层来做这些事呢,类似快捷菜单那样,用户高兴就在里面做一下该做的事,不高兴就在其它地方点一下它就消失,本来很轻便快捷的操作,DUANG~弹出一个窗体来会不会令用户心里咯噔一下呢,感受层面的事

【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式

这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾.因为两个的内容都不多,我就合成一篇文章啦. 这还里还要吐嘈一下WinForm,也可能是WPF玩的年头长了,觉得WinForm真TNND的难用呀,弄几个定义的控件,相当之麻烦. 回归正文. 一.禁用右键菜单 禁用右键菜单其实是很容易的.主就要是实现一个接口 IMenuHandler,这个接口有一个 OnBeforeContextMenu的方法,我们在

关于一条定制长按Power键弹出Dialog的需求

如题,需要定制长按Power键弹出的Dialog,UI上的大致效果是:全屏,中间下拉按钮“Swipe Down To Power Off”下拉关机,底部左右两侧“Reboot”,“Cancel”按钮,分别是重启,取消操作.并要求弹出Dialog的同时,背景渐变模糊,操作控件有相应动画效果,执行相应操作有同步动画,退出界面背景渐变至透明消失.设计效果酱紫: 具体控件动画要求就不再详述.主要两件事:1.关机流程,更准确的说应该是对长按Power键的处理:2.定制Dialog. 1.长按Power键,

WPF Popup全屏 弹出方法。解决只显示75%的问题。

WPF Popup全屏 弹出方法.解决只显示75%的问题. WPF 中 Popup 有一个特点.当Popup的高度超过屏幕的75%的时候,只显示75%的高度. 如下代码: <Window x:Class="WpfApplication13.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.micro

2014年8月24日 菜单 工具条 右键菜单(上下文菜单)

今天说说菜单 工具条 右键菜单吧,总的来说这些东西其实就是同一个东西.以前我们在做插件的时候遇到右键菜单啊,菜单什么的都会习惯性地去用actionSets这个拓展点.不过现在官方却把这个扩展点已经被deprecated弃用了..官方的说明: Do not use this extension point, it will be removed in future versions of this product. Instead, use the extension point org.ecli

新版【CefSharp】 禁用右键菜单 43.00+

禁用右键菜单其实是很容易的.主就要是实现一个接口 IMenuHandler ,这个接口有一个  OnBeforeContextMenu 的方法,我们在这里让返回一个false,右键菜单就消失了. internal class MenuHandler : IMenuHandler { public bool OnBeforeContextMenu(IWebBrowser browser, IContextMenuParams parameters) { return false; } } 再将这个

禁用右键菜单

<script type="text/javascript" language="javascript"> /*function cancelKey(){  return false;  } document.oncontextmenu =cancelKey; */  //禁用右键菜单(方法二) document.oncontextmenu = function(){return false}; </script> 禁用右键菜单

WPF的WebBrowser屏蔽弹出脚本错误窗体

WPF自带的WebBrowser在訪问一些有问题的网页时常常跳出非常多提示脚本错误的窗体, 可是WPF没有自带屏蔽这些窗体的方法或属性. 所以网上找来一使用反射的方法来屏蔽弹出脚本错误窗体的方法, 非常管用. 代码例如以下: public void SuppressScriptErrors(WebBrowser wb, bool Hide) { FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2&quo

Android之弹出菜单框【注册上下文菜单】

注册上下文菜单:(长按弹出一个菜单) 第一种创建方法(与长按事件结合): public class MainActivity extends Activity { private TextView username,password; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState)