前言
作者:浪子花梦,一个有趣的程序员 ~
在上一文中我们对所有菜单进行了命令的绑定(还没有实现它的功能),此文章我们将对这些命令进行一个快捷键的绑定,并且完成一个很重要的功能(MVVM三层架构的交互使用:UI、业务逻辑、数据层),完成对 查看菜单中对字体的大小功能进行实现 . . .
前文如下所示:
【WPF高仿 Windows记事本】开发日记 (一) UI布局与 帮助菜单 功能实现
【WPF高仿 Windows记事本】开发日记 (二) 初步使用MVVM模式设计 帮助菜单 的三个命令
【WPF高仿 Windows记事本】开发日记 (三) 完善所有菜单的命令绑定并创建Models层的设计
此文章的实现效果如下所示:
查看菜单功能实现 三层架构
1)为所有的命令添加快捷键(XAML代码中实现):
<Window.InputBindings>
<!-- 文件菜单中的快捷键 -->
<KeyBinding Command="{Binding FileViewModel.NewCommand}" Gesture="Ctrl+N" />
<KeyBinding Command="{Binding FileViewModel.NewWindowCommand}" Gesture="Ctrl+Shift+N" />
<KeyBinding Command="{Binding FileViewModel.OpenCommand}" Gesture="Ctrl+O" />
<KeyBinding Command="{Binding FileViewModel.SaveCommand}" Gesture="Ctrl+S" />
<KeyBinding Command="{Binding FileViewModel.SaveAsCommand}" Gesture="Ctrl+Shift+S" />
<KeyBinding Command="{Binding FileViewModel.PrintCommand}" Gesture="Ctrl+P" />
<!-- 编辑菜单中的快捷键 -->
<KeyBinding Command="{Binding EditViewModel.CancelCommand}" Gesture="Ctrl+Z" />
<KeyBinding Command="{Binding EditViewModel.ShearCommand}" Gesture="Ctrl+X" />
<KeyBinding Command="{Binding EditViewModel.CopyCommand}" Gesture="Ctrl+C" />
<KeyBinding Command="{Binding EditViewModel.PasteCommand}" Gesture="Ctrl+V" />
<KeyBinding Command="{Binding EditViewModel.DeleteCommand}" Gesture="Del" />
<KeyBinding Command="{Binding EditViewModel.UsingBingSearchCommand}" Gesture="Ctrl+E" />
<KeyBinding Command="{Binding EditViewModel.FindCommand}" Gesture="Ctrl+F" />
<KeyBinding Command="{Binding EditViewModel.FindNextCommand}" Gesture="F3" />
<KeyBinding Command="{Binding EditViewModel.FindPrevCommand}" Gesture="Shift+F3" />
<KeyBinding Command="{Binding EditViewModel.ReplaceCommand}" Gesture="Ctrl+H" />
<KeyBinding Command="{Binding EditViewModel.GoToCommand}" Gesture="Ctrl+G" />
<KeyBinding Command="{Binding EditViewModel.CheckAllCommand}" Gesture="Ctrl+A" />
<KeyBinding Command="{Binding EditViewModel.TimeDateCommand}" Gesture="F5" />
<!-- 查看菜单中的快捷键 -->
<KeyBinding Command="{Binding ViewViewModel.ZoomInCommand}" Gesture="Ctrl+Add" />
<KeyBinding Command="{Binding ViewViewModel.ZoomOutCommand}" Gesture="Ctrl+Subtract" />
<KeyBinding Command="{Binding ViewViewModel.ZoomDefaultCommand}" Gesture="Ctrl+0" />
</Window.InputBindings>
这样我们就可以按下快捷键触发命令了 . . .
.
.
2)数据层 DocumentModel 类数据准备:
.
.
3)将该数据绑定到 UI 层(TextBox):
.
.
4)实现 查看菜单的三个命令的功能:
分别将字体设置为当前的110%、90%、默认大小 . . .
.
.
5)创建多值绑定转换的类,用于将默认字体大小(FontSizeDefault)绑定到状态栏
代码如下所示:
.
.
6)绑定UI层(状态栏的百分比):
先在资源中引用:
进行绑定: