在界面中有很多字母带下划线的加速键如下图中带下划线的字母,在WPF如何实现呢?
如何定义
WPF中定义比较简单,就是在控件的Text或Content属性中给做加速键的字母前加上下划线即可,例如下面用M做加速键:
<Label Content="贵金属(_M):" />
在新的最近几年新的操作系统上,这个加速键的下划线效果可能不会显示出来,按下ALT键就显示了。
加速键定义原则
- 使用单词的第一个字母;
- 如果第一个有重复,试下第二个;
- 如果第二个也重复,第三个也可以的嘛;
- 还是不行,可以考虑第二个单词或者第三个单词按上面1、2、3的原则来;
- 同一界面里,加速键尽量不重复。
多个控件的绑定
在过去,WinForm的开发中,多个控件的捆绑是自动的,也就是说通过给标签Label设置加速键,执行的时候它会把焦点自动设置到相邻的文本框或者别的有焦点控件上,而在WPF中要显式地指定。
如下图,我要通过按ALT+M把焦点移动组合框上:
<Label Content="贵金属(_M):"
Target="{Binding ElementName=cmbCategory}"
/>
上面的关键在代码的第二行。
经验
有时候我们在使用标签Label的时候,下划线_会自动解释成为加速键,可是某个时候我们要显示下划线而不是解释成加速键的时候,用TextBlock代替Label就OK了。
达叔傻乐(darwin.zuo@163.com)