WPF中使用加速键(或称访问键)

原文:WPF中使用加速键(或称访问键)

在界面中有很多字母带下划线的加速键如下图中带下划线的字母,在WPF如何实现呢?

加速键示例

如何定义

WPF中定义比较简单,就是在控件的Text或Content属性中给做加速键的字母前加上下划线即可,例如下面用M做加速键:

<Label Content="贵金属(_M):" />

在新的最近几年新的操作系统上,这个加速键的下划线效果可能不会显示出来,按下ALT键就显示了。

没按ALT的效果,M下面没有下划线

按了ALT的效果,M下面显示下划线指示这是个加速键

加速键定义原则

  1. 使用单词的第一个字母;
  2. 如果第一个有重复,试下第二个;
  3. 如果第二个也重复,第三个也可以的嘛;
  4. 还是不行,可以考虑第二个单词或者第三个单词按上面1、2、3的原则来;
  5. 同一界面里,加速键尽量不重复。

多个控件的绑定

在过去,WinForm的开发中,多个控件的捆绑是自动的,也就是说通过给标签Label设置加速键,执行的时候它会把焦点自动设置到相邻的文本框或者别的有焦点控件上,而在WPF中要显式地指定。

如下图,我要通过按ALT+M把焦点移动组合框上:

让ALT+M成为组合框的加速键

            <Label Content="贵金属(_M):"
                   Target="{Binding ElementName=cmbCategory}"
                   />

上面的关键在代码的第二行。

经验

有时候我们在使用标签Label的时候,下划线_会自动解释成为加速键,可是某个时候我们要显示下划线而不是解释成加速键的时候,用TextBlock代替Label就OK了。

达叔傻乐([email protected])

原文地址:https://www.cnblogs.com/lonelyxmas/p/12114620.html

时间: 2024-10-10 06:29:56

WPF中使用加速键(或称访问键)的相关文章

禁用WPF中DataGrid默认的鼠标左键拖动多选行的效果

最近项目上有需求要做DataGrid的行的拖拽功能, 有个很现实的问题就是鼠标左键按下是拖拽还是多选. 查看了DataGrid的源码发现,系统内部会在鼠标按下的时候CaptureMouse,然后设置私有变量来保存多选标志, 在鼠标MouseMove的时候根据变量判断是否多选. private bool _isDraggingSelection;                                  // Whether a drag select is being performed

WPF中的三维空间(2)

原文:WPF中的三维空间(2) 2.10.3 三维对象操作 1.在二维平面空间移动.缩放.旋转Viewport3D控件对象         图2-196 选中Viewport3D控件对象      图2-197 二维平面空间中对象操作图标 [设计面板]实际上是X-Y平面,在[对象和时间线]面板上选中Viewport3D控件对象,同时选中[工具]面板中的"选择"工具,在[设计面板]中的选中的对象被平面蓝色边框(称二维边框)包围,边框上有8个选择点,如图2-196所示.图的中央有1个点是对

WPF中的数据绑定!!!

引用自:https://msdn.microsoft.com/zh-cn/magazine/cc163299.aspx 数据点: WPF 中的数据绑定 数据点 WPF 中的数据绑定 John Papa 代码下载位置: DataPoints2007_12.exe (161 KB) Browse the Code Online   目录 数据绑定细节 创建简单的绑定 绑定模式 绑定的时间 绑定到 XML 对象绑定和 DataTemplates 对数据进行排序 欢迎试用和反馈 到目前为止,很多人都知道

GMap.Net解决方案之在WinForm和WPF中使用GMap.Net地图插件的开发

在做地理位置相关的开发时,总是面临高额地图引擎费用让大部分用户望而却步,加之地图数据又是天价,那么GMap.NET就是首选了,它本身就是开源免费,服务器可以在本地缓存,以后访问时就可以直接访问. 可以广泛用于保密单位的空间数据服务应用,如军队.武警.公安等保密单位.下面我们就开始我们的GMap.NET的之旅吧! 什么是GMap.NET? 来看看它的官方说明:GMap.NET is great and Powerful, Free, cross platform, open source .NET

浅析WPF中MVVM模式下命令与委托的关系

??各位朋友大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com.最近因为项目上的原因开始接触WPF,或许这样一个在现在来讲显得过时的东西,我猜大家不会有兴趣去了解,可是你不会明白对某些保守的项目来讲,安全性比先进性更为重要,所以当你发现银行这类机构还在使用各种"复古"的软件系统的时候,你应该相信这类东西的确有它们存在的意义.与此同时,你会更加深刻地明白一个道理:技术是否先进性和其流行程度本身并无直接联系.由此我们可以推论出:一项不流行

WPF快速指导10:WPF中的事件及冒泡事件和隧道事件(预览事件)的区别

本文摘要: 1:什么是路由事件: 2:中断事件路由: 3:自定义路由事件: 4:为什么需要自定义路由事件: 5:什么是冒泡事件和预览事件(隧道事件): 1:什么是路由事件 WPF中的事件为路由事件,所谓路由事件,MSDN定义如下: 功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件. 实现定义:路由事件是一个 CLR 事件,可以由 RoutedEvent 类的实例提供支持并由 Windows Presentation Foundation (W

WPF中嵌入普通Win32程序的方法

公司现在在研发基于.Net中WPF技术的产品,由于要兼容旧有产品,比如一些旧有的Win32程序.第三方的Win32程序等等,还要实现自动登录这些外部Win32程序,因此必须能够将这些程序整合到我们的系统中来,让使用者看起来它们好像是一个程序. 在MSDN中有专门的章节提到了在WPF中嵌入Win32控件的办法,那就是使用 HwndHost ,只要把 Win32控件的句柄传递给 HwndHost 就可以了.MSDN中的例子演示的都是在同一个进程内创建的 Win32控件,我一开始认为只要通过FindW

在MFC对话框程序中使用加速键

新建一个基于对话框的工程,添加一个按钮,修改按钮ID,这里为ID_BTN_OPENFILE,为按钮添加消息响应事件,这里我打开文件保存对话框: void CAccelDlg::OnBtnOpenfile() { // TODO: Add your control notification handler code here CFileDialog dlg (TRUE); dlg.DoModal (); } 为工程添加一个加速键资源,添加一条,注意ID要和按钮的ID相同,只有这样才能产生关联 为主

WPF 中的 Pack URI-访问程序集资源

在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括: 指定当应用程序第一次启动时显示的用户界面 (UI). 加载图像. 导航到页 加载不可执行的数据文件. 在代码中使用 Pack URI 在代码中,可以通过实例化 Uri 类并将 pack URI 作为参数传递给构造函数来指定 pack URI.下面的示例说明了这一点. C# Uri uri = new Uri("pack://application