模板管理器
当模板中Cell比较多的时候,你往往会眼花缭乱,这时“模板管理器”就特别有用。请点击该工具栏中的第一个按钮,就能打开“模板管理器”工具窗口了(通过点击VisualStudio菜单的“视图”-->“其它窗口”-->“模板管理器 6.0”也能打开,“属性管理器”及“NamedCellStyle 管理器”类似):
这是一个标准的VisualStudio工具窗口,所以你可以把它放到任意地方,比如与“解决方案资源管理器”窗口一起停靠在VisualStudio的右边,“属性”窗口的上面。
“模板管理器”类似于VisualStudio的“文档大纲(Document Outline)”窗口,它有4大主要功能:
1、 通过这个窗口,你可以一览当前模板中的所有元素(Template/Section/Cell)以及它们之间的关系。窗口中所有元素都按照它们的父子关系及索引顺序排列。
2、 通过它选择某个元素,并通过右键菜单做剪切/删除/重命名等操作。
3、 通过点击窗口中工具栏上的向上箭头和向下箭头改变Cell的索引。当然,你更可以直接拖拽Cell到你想要的索引位置、甚至是其它Section中。
4、 点击工具栏上最右边的“设置”按钮来配置MultiRow模板设计器(通过点击VisualStudio菜单的“工具”-->“选项”打开“选项”对话框并在左边选择“MultiRow 6..0 模板设计器”也可以)。
这里提供了MultiRow 模板设计器的部分外观以及操作方式的设置。比如你可以设置Cell的对齐方式为Grid,这时Section的背景会显示一些对齐用的点,而当你拖拽元素的时候,元素会吸附到点上而不是其它元素上。
Table
MultiRow最大的特点是自由布局,所以MultiRow的模板设计器的操作就像Form设计器一样是以Cell为单位的。但很多时候,你需要的模板中间有很大一片区域就是一个方方正正的标准表格,如果要一个一个Cell的拼出这样一个表格的话,是不是太麻烦了?没关系,MultiRow的模板设计器早就考虑到了你的这种用例,并提供了一揽子解决方案,这就是“Table”。
创建Table
现在请新建一个空白模板,并打开“工具箱”中的“设计时组件 6.0”选项卡,选择“Table”:
然后在Row上按下鼠标左键,拉出一片区域再放手,看看发生了什么?
理解Table
Table是只有在设计时才存在的概念,在运行时实际上就是一堆离散的Cell,而Table只是把这些Cell作为一个整体来管理而已;此时,Table有行和列的概念,Table中的Cell必需与Table的行/列对齐。
Table模式
当你点击Table里面时,Table将进入另外一种编辑模式——Table模式:
在这种模式下,Table好像就像和外面的世界分离了,你对Table内部的操作都将把Table视为上下文环境。比如按’Tab’键只会在Table内部循环,按’Ctrl’ + ‘A’只会选中Table中的所有Cell。
而一旦进入Table模式, Table就会显示虚拟的行头和列头,你可以像操作Excel一样选择一个或多个行/列,调整它们的高度/宽度,或在“属性”窗口中设置它们的宽度/高度;当然,你也可以使用右键菜单做更复杂的操作,比如插入一列:
你注意到右键菜单上有“合并”、“拆分”菜单项了吗?没错,Table完全能够像Excel那样合并/拆分单元格:
Table中的Cell默认都是TextBoxCell,如果你需要其它类型的Cell,你可以使用右键菜单把你选择的Cell置换成其它类型(同样,你也可以在置换Table外面的Cell)。新的Cell仅仅保留基类Cell的属性值,而旧Cell上特有属性的值将被丢弃。
例如:将一个TextBoxCell的MaxLength属性和ReadOnly属性都设了值,而后置换为ComboBoxCell,尽管ComboBoxCell也有MaxLength属性,但是由于MaxLength属性不是定义在基类Cell上的,所以ComboBoxCell的MaxLength将保留默认值,但是ReadOnly属性会和旧的TextBoxCell保持一致。
Table中的Cell也可以删除,被删除的区域将以灰白相间的格子图案来表示,被删除的区域可以选择,选择后可以使用“置换”操作重新放上Cell。
使用Table一个最为重要的便利就是设置外圈边框:按’Control’+’A’ 选择Table中所有Cell,或者选择一个矩形区域的Cell,然后点击右键菜单中的“边框”菜单项,这时就会弹出“边框”编辑器,边框类型选择“圆角边框”或者普通边框,注意比较和其它地方弹出的“边框”编辑器有什么不同?
没错,这个编辑器多了“内部”的按钮,由于对于MultiRow来说,每一个Cell都是一个独立的单元,所以Cell只有外边框,没有内边框;即使你在Table外面把Cell紧靠在一起摆成一个表格再设边框,弹出的边框编辑器也是没有“内部”按钮的。
照上图的样式设置好边框,点击Table外面的区域,看看边框的样子(这里顺带说一句,MultiRow中边框的每一条边的颜色、线型、角度都是可以单独设置的):
Cell模式
当点击Table外面的区域或者Cell退出Table模式后,Table进入Cell模式。
此时,设计器将Table看做一个整体的元素,你可以理解为把Table中的所有Cell组成了一个进行处理。对Table的操作会影响Table中所有的Cell。你可以像单个Cell那样对它进行剪切/复制/粘帖/调整大小等操作。
对Table调整大小将使Table进行等比例缩放,但是由于Cell的大小是整形的,所以有可能导致原来大小相同的Cell缩放后大小出现偏差:
图中第三行的Cell比第一行和第二行高1个像素点。
在Cell模式下,点击Table的边线周围(大概5个Pixel,此时光标将变为四个方向都有箭头的SizeAll)将选中整个Table。此时,拖拽将导致整个Table移动;而右键菜单将比其它Cell多了个“拆分成自由Cell”的菜单项,点击它后,整个Table将被拆分成自由Cell:
注意:被拆分后的Cell不能再重新组合成Table,除非使用“撤销”操作或者重新创建一个Table。