用XML文件定义Ribbon界面.docx
《用XML文件定义Ribbon界面.docx》由会员分享,可在线阅读,更多相关《用XML文件定义Ribbon界面.docx(9页珍藏版)》请在冰豆网上搜索。
![用XML文件定义Ribbon界面.docx](https://file1.bdocx.com/fileroot1/2023-1/3/416a4374-8ea7-44be-8b63-a5642e829420/416a4374-8ea7-44be-8b63-a5642e8294201.gif)
用XML文件定义Ribbon界面
为Ribbon界面添加按钮控件
按钮控件可以说是我们最常用的控件了。
在Ribbon界面中,按钮控件有多种形式,主要有普通按钮(Button),复选框(CheckBox),下拉按钮(DropDownButton)以及切换按钮(ToggleButton)等,可见为Ribbon界面添加按钮控件是我们对Ribbon界面进行设计的基本功。
虽然VisualStudio2010没有提供针对ScenicRibbon界面编辑的可视化设计工具,但是通过对Ribbon界面XML文件的编辑来实现控件的添加和定义也十分简单。
我们还是在上文例子的基础上,实现按钮控件的添加。
我们可以打开Ribbon界面描述文件ribbonmarkup.xml,然后在其中的命令部分添加下面的语句,定义相应的按钮控件:
--Tab页面-->
—按钮分组控件-->
普通按钮
这是一个普通按钮。
下拉按钮
这是一个下拉按钮。
切换按钮
这是一个切换按钮。
复选按钮Command.TooltipTitle>
这是一个复选按钮。
在这里,我们定义了多种按钮控件:
普通按钮,下拉按钮,切换按钮和复选框按钮。
同时为了对这些按钮控件进行管理,我们还定义了一个组控件GroupButton。
对于GroupButton,我们只是简单地给定了它的ID和符号。
而对于NormalButton等按钮控件,我们通过XML文件,指定了这些按钮控件的具体属性,比如按钮的按钮上显示的文字,工具栏提示,按钮显示的图片等等。
通过XML文件,我们可以对各个控件的属性进行详细的定义,完全根据我们的需要对控件进行自定义。
完成控件的定义后,我们就可以将这些控件布局到Ribbon面板上了。
继续在xml文件中的视图(View)部分编辑代码,实现各个控件的排布:
在这段视图部分的XML代码中,我们可以很清楚地看到各个空间之间的嵌套关系:
TabHome这个Tab页面包含一个GroupButton这个组,而这个组又包含DropDownButton,NormalButton,ToggleButton和CheckBox这几个子按钮控件。
更进一步的,DropDownButton又包含了NormalButton和TonggleButton这两个子按钮控件。
通过这种层层嵌套,我们就实现了各个子控件的布局。
现在我们编译运行这个解决方案,就可以看到我们刚刚添加的Ribbon界面了:
使用控件布局模板
在上面的例子中,我们将多个按钮控件都添加到了一个组控件中。
在这个组控件内部,各个按钮控件是按照怎样的规则进行布局的呢?
能不能对默认的布局进行控制?
为了对一个控件容器内部的各个控件进行布局,ScenicRibbon提供了相应的布局模板。
在一个控件容器,例如上文中我们用到的Group控件,对控件进行排布时,ScenicRibbon会按照我们在XML文件中定义的布局模板来对控件进行排布。
在XML中,我们使用SizeDefinition属性来定义容器所使用的布局模板,例如:
这行代码就表示使用“'ThreeButtonsAndOneCheckBox'”作为这个组容器的布局模板,表示这个组内部一共有三个按钮和一个复选框。
为了便于我们的使用,ScenicRibbon为我们提供了很多已经预先定义好的布局模板,例如我们常用的有:
处理这些预先定义的布局模板之外,针对一些特殊需要,我们还可以自定义布局目标,实现更加灵活的控制。
例如,下面的代码简单地自定义了一个布局模板:
—自定义布局模板-->
—使用布局模板-->
在这个自定义布局模板中,我们定义了控件在不同显示状态(Large,Medium,Small)下,图标的尺寸和标签文本的显示与否。
这样,我们就可以对控件的外观进行非常细致的控制,满足用户体验设计师的苛刻要求。
设置控件的缩放策略
在上文的自定义布局模板中,我们定义了控件在不同状态下的显示尺寸。
当我们在缩放窗口的时候,Ribbon面板的尺寸会相应的改变,这时,Ribbon控件的尺寸和排布也会发生相应的变化。
Ribbon控件的大小以及排布方式,都受到Tab页面控件缩放策略的控制。
在Ribbon界面中,每个Tab页面都有独立的控件缩放策略,我们可以通过定义Tab页面的缩放策略来控制按钮的大小以及在面板尺寸发生变化时候,如何对控件进行重新排布。
为了展示Tab页面缩放策略对控件尺寸和排布的控制,我们在Ribbon面板中在添加多个按钮,并实现不同的组使用不同的重排次序。
首先我们在XML文件的命令部分(Commands)添加相应的控件描述:
--Tab页面-->
--主要分组-->
按钮控件
点击这个按钮控件,获得当前系统时间。
--数据库组-->
Database
--数据库组按钮控件-->
LabelTitle="AddTable">
AddTable
AddTable
DeleteTable
DeleteTable
PrintRelationships
PrintRelationships
--剪切板组-->
Clipboard
--定义剪切板组的图标,用于在剪切板处于Popup模式时显示-->
--剪切板组按钮控件-->
Paste
Paste
Cut
Cut
Copy
Copy
在上面的代码中,我们定义了控件的各种属性,现在要将这些控件布置到Ribbon面板上,则需要Tab页面的缩放策略来控制了。
所以,我们在XML文件的视图部分对控件进行布置并设置缩放策略:
--定义Tab页面的缩放策略-->
--定义在默认情况下的控件尺寸。
在通常情况下,应用程序启动后都处于尺寸最大的状态,
所以在这里,都默认使用大尺寸-->
--这里定义了Ribbon面板缩放时,Ribbon控件缩放的次序
比如,当窗口缩小,Ribbon面板跟着缩小时,GroupDatabase组
的按钮将首先缩小为Medium类型,其次GroupClipboard组缩小
为Medium类型,以此类推-->
--定义控件的嵌套关系
我们使用组的SizeDefinition属性定义