技术开发 频道

使用WMFL实现可配置Windows窗体


【IT168技术文档】

  这里介绍的是个带有可以扩展机制的例子,通过添加一个标记模型来实现。我们把里面的解析规则可以概述为“XML 元素映射到.NET Framework 类型 而XML 中的属性映射到类型的属性、方法(或者事件)”。这个例子包含一个markup parser通过解析XML文件来动态的产生一个对象的实例树。对于标记的格式包括下面的结构:

1. XML 命名空间 到 .NET Framework 命名空间的映射

2. 对象实例化名称

3. 对象验证及引用

4. 属性设置

5. 实例和静态方法

6. 事件委托

7. 组件引用



Disclaimer

  这个例子中使用的技术不是下一版本Windows Forms的一部分。另外,这里的例子是针对.NET Framework version 1.1的,至于其他版本没有测试过。

Basic Sample

  下面的例子显示了一个XML的语法用来声明或定义一个包含了Label的简单窗体。
xml version="1.0" encoding="utf-8" ?> mapping xmlns="http://www.microsoft.com/2003/WindowsForms" namespace="System.Windows.Forms;System.Drawing"?> <wfml xmlns="http://www.microsoft.com/2003/WindowsForms" xmlns:wfml="http://www.microsoft.com/2003/WFML"> <Form wfml:root="true" Text="Basic Sample" Size="300,200"> <Label Text="Hello World" AutoSize="True" Location="10, 20"/> <method.Show/> Form> wfml>
  WMFL解析器根据上面的XML文件来动态的生成一个窗体。这里假设上面的XML文件内容包含在“basic.xml”文件中。

MarkupParser parser = new MarkupParser();

object form = parser.Parse("basic.xml");

  下面是动态生成的窗体:

Dissecting the Basic Sample

  根据Xml文档中的定义,解析器进行了精确的处理,一个根标签,实体声明和一个结束标签。下面是对各部分的描述。

XML Declaration
xml version="1.0" encoding="utf-8" ?>
0
相关文章