使用XML定制Ribbon的一点小前奏(稍微再进一步的理解XML)

定制文档级Ribbon界面的实现思路:

1、excel的文件使用rar+xml的形式保存在本地。

2、用压缩软件打开文件,以规范的格式直接编缉或添加xml文件

3、使用excel文件时,主程序会解析xml文件,根据内容加载数据,包括Ribbon功能区的元素

 

一、XML是啥

  1、XML就是一个小型数据库,可以用文本文件持久化保存数据。

  2、XML用文本格式保存数据,使它可以兼容不同平台。

  3、有意义的标签使它既保留了扩展性,同时也更易读。

  4、XML本身是一个对象,其中的每一个元素也都是对象(DOM),可以映射到表格数据

  5、XML还有表达对象之间的关系的能力(别忘了它就是数据库,可以说它也是一个关系型数据库)

  6、数据验证技术(schema)保证数据的完整性

和XML有关的技术太多了,一辈子可能也学不完。

二、面向对象的XML

    下面的简单示范可以看出普通表格、XML、和使用代码写的“类”有互相转化的能力。

1、excel和xml分别如何表示人类

Name Gender Age Hobby
刘备 32 哭鼻子
关羽 30 耍大刀
张飞 28 卖猪肉

 

 

 

 

<Persons>
    <Person name="刘备" gender="男"  age="32" hobby="哭鼻子"/>
    <Person name="关羽" gender="男"  age="30" hobby="耍大刀"/>
    <Person name="张飞" gender="男"  age="28" hobby="卖猪肉"/>
</Persons>

  a、每一个Person元素和excel表中的数据行对应。

  b、每一个Person元素都有和excel列名对应的属性。

2、使用vba代码表示人类

    类模块:Person(实体类)。

Public name As String
Public age As Integer
Public gender As String
Public hobby As String

   标准模块:VBPerson。NEW一个人类的具体对象(类的实例),这个对象和excel的行“对应”

   (数据库表中的列可以称为“域--Filed”,表中的每一行可以称为“实体--Entity”)

Dim p1 As New Person
    p1.name = "刘备"
    p1.age = 32
    p1.gender = ""
    p1.hobby = "哭鼻子"

  a、excel表格的列名和类中的“变量--字段”(这里没有使用属性,但使用属性更合适)有映射关系,同样的和XML也有对应关系。

      b、每New一个Person都对应着excel中的一行,也对应着XML中的一个元素。

  注:实体类(modal)没有行为,只用来保存数据。表格中的数据也没有行为,XML定制Ribbon虽然有类似OnAction这样的东东,个人感觉也应该理解为属性,不过这个属性的值对应了回调的方法名。

二、XML中的对象和Ribbon元素之间的关系

Ribbon做为对象的容器,他能容纳的对象种类很多。tab(标签)、group(分组)、menu(菜单按钮)、button(按钮)等。

1、这些对象都可以用XML元素来映射,比如button在XML中可以这样表示

<button id="btn" label="我的按钮">

2、也可以表达对象之间的关系,比如一个group(分组)下有一个menu按钮,menu按钮中有两个button

<group id="CustomGroup" label="自定义分组">
   <menu id="CustomMenu">
      <button id="btn1" label="按钮一"/>
      <button id="btn2" label="按钮二"/>
   </menu>
</group>

补充:Composite设计模式

      Ribbon中的元素的关系比较符合Composite设计模式。用树状结构表达“容器+子容器+...+对象”这样的复杂结构。

posted @ 2016-06-07 12:13  复杂的石头  阅读(2426)  评论(0编辑  收藏  举报