博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)
阅读量:6260 次
发布时间:2019-06-22

本文共 3695 字,大约阅读时间需要 12 分钟。

原文:

     本篇将开始介绍标签工具栏的开发内容,标签工具栏可以说是Ribbon 的核心部分,应用程序所有的功能特性都会集中在这里,一个强大的Ribbon 工具栏也是一款软件成功的关键。在开始前还是先来看看标签工具栏的结构,从图中可看出Ribbon 工具栏主要分为四部分:Ribbon -> Tab -> Group -> Control

Ribbon

     下面来添加一个Clipboard 菜单组,其中包括三个RibbonButton 控件分别实现“粘贴”、“拷贝”、“剪切”功能。与前两篇文章一样,先为Button 控件编写<RibbonCommand> 和Command 事件内容。

Clipboard

private void PasteCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e){    e.CanExecute = ApplicationCommands.Paste.CanExecute(FocusManager.GetFocusedElement(this), null);}private void PasteCommand_Executed(object sender, ExecutedRoutedEventArgs e){    ApplicationCommands.Paste.Execute(FocusManager.GetFocusedElement(this), null);}private void CopyCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e){    e.CanExecute = ApplicationCommands.Copy.CanExecute(FocusManager.GetFocusedElement(this), null);}private void CopyCommand_Executed(object sender, ExecutedRoutedEventArgs e){    ApplicationCommands.Copy.Execute(FocusManager.GetFocusedElement(this), null);}private void CutCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e){    e.CanExecute = ApplicationCommands.Cut.CanExecute(FocusManager.GetFocusedElement(this), null);}private void CutCommand_Executed(object sender, ExecutedRoutedEventArgs e){    ApplicationCommands.Cut.Execute(FocusManager.GetFocusedElement(this), null);}

     在Command 事件中使用了ApplicationCommands 来完成Paste、Copy、Cut 各项功能。同时使用FocusManger.GetFocusedElement 来锁定ApplicationCommands 的操作对象(TextBox),这也就是为什么在《WPF 4 Ribbon 开发 之 快捷工具栏(Quick Access Toolbar)》一文中提到的将<Ribbon> 的FocusManager.IsFocusScope 属性设为True 的原因。将上面RibbonCommand 设置加入相应<RibbonButton>的Command 属性中。

... ...
... ...

     上面程序中通过RibbonControlSizeDefinition 来定义RibbonButton 控件在Group 中的图标显示方式(分别为大、小两种),在本例中我们将Paste 设为大图标,另外Copy、Cut 两个设为小图标。HasDialogLauncher 属性用于设定是否显示Dialog Box Launcher 按键(如下图),如果有需要也可以为Dialog Launcher 添加工具栏。

Launcher

     这样一个RibbonGroup 就完成了。有了上面的基础对于Font 组的开发就轻而易举了,在该组中使用了两个<RibbonControlGroup>控件组分别用于字体颜色和尺寸大小的设置,大家可以参考下面代码进一步了解。

private void FontColorCommand_Executed(object sender, ExecutedRoutedEventArgs e){    txtBox.Foreground = new SolidColorBrush(            (Color)ColorConverter.ConvertFromString(e.Parameter as string));}private void fontComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e){    double fontSize = 0;    switch (fontComboBox.SelectedIndex)    {        case 0:            fontSize = 10;            break;        case 1:            fontSize = 20;            break;        case 2:            fontSize = 30;            break;        default:            break;    }    txtBox.FontSize = fontSize;}

修改字体大小和颜色后的效果图:

 Notepad

     至此,Ribbon 工具栏相关内容的介绍已全部完成,希望该系列对大家有所帮助。当然Ribbon 控件库中的控件还不止这些,有很多其他控件供开发者使用,有兴趣的朋友可以按需要进行选择,并完善软件的Ribbon 工具栏功能。

本系列相关文章

1.

2.

源代码下载

转载地址:http://pxhsa.baihongyu.com/

你可能感兴趣的文章
svg与视频结合的镂空效果实践总结
查看>>
Scikit中的特征选择,XGboost进行回归预测,模型优化的实战
查看>>
Sklearn入门介绍
查看>>
Android广告图片轮播,支持无限循环和设置轮播样式、切换时间等
查看>>
screenX/Y,clientX/Y,offsetX/Y和pageX/Y之间有什么区别?
查看>>
webpack4.0优化那些事儿
查看>>
数据结构与算法(位运算) --javascript语言描述
查看>>
数据结构与算法(回溯法) --javascript语言描述
查看>>
百度地图开发实例番外篇--实用方法(持续更新)
查看>>
“大数据应用场景”之隔壁老王(连载一)
查看>>
k均值聚类算法(k-means)
查看>>
修改springboot的端口来启动项目
查看>>
MaxCompute SQL原理解析及性能调优
查看>>
vue中慎用style的scoped属性
查看>>
深度学习在股票市场的应用
查看>>
redis源码分析之事务Transaction(下)
查看>>
【273天】我爱刷题系列(32)
查看>>
Hystrix基础入门和特性讲解
查看>>
webpack-dev-server模块
查看>>
解决brew默认安装iamgemagick7导致wand库运行错误问题
查看>>