65.9K
CodeProject 正在变化。 阅读更多。
Home

Fireball.XmlGui

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.10/5 (7投票s)

2005 年 7 月 29 日

2分钟阅读

viewsIcon

34543

downloadIcon

517

一个用于创建基于 XML 文件创建用户界面的插件的库。

Xml_gui_sample_23_07_05.PNG

引言

在本文中,我将介绍 Fireball.XmlGui 是什么,并对其进行简要介绍。该库正在开发中,任何建议和错误反馈都将不胜感激。如果您发现错误,请在 这里 注册并向我们发送问题。Fireball.XmlGui 采用 LGPL 许可,这对于需要在商业应用程序中使用该库的程序员非常有用,因为 LGPL 不会强制您分发源代码,您只需要分发或链接到我的网站以获取 Fireball.XmlGui 源代码。有关此库的新闻,请访问 我的主页,并从 这里 获取最新的二进制文件。

背景

Fireball.XmlGui 是为基于插件的应用程序开发而设计的,用于支持使用简单的 XML 文件创建动态插件。其语法非常类似于 XAML,并且也可以使用代码隐藏!您只需要在文档的根节点上指定 CodeBehind 属性,并提供 C# 源代码文件的文件名即可。该库不仅限于 System.Windows.Forms GUI 创建。您还可以使用它来动态创建任何其他类型的类,例如在 XML 中将类作为子节点添加,就像此示例中的 Controls 标签一样。您只需要集合并从 System.Collections.IList 继承即可。

使用代码

请参阅下一个 XML 示例代码

<?xml version="1.0" encoding="utf-8" ?>

<XFGDocument Name="Sample XmlGui" 
             NameSpaces="System.Drawing,System.Windows.Forms,
                    customNamespace,Fireball.XmlGui.Graphics" 
    CodeBehind="formsample.fxg.cs">
    
  <References>
      <Assembly Name="System.dll" />
      <Assembly Name="System.Drawing.dll" />
      <Assembly Name="System.Windows.Forms.dll" />
  </References>
  <MyForm Name="Prova"  Height="300" Width="400" Text="Hello World!">
    <Controls>
 
      <ToolStrip Name="ToolStrip1">
    
      </ToolStrip>
      <MenuStrip Name="MenuStrip1">
            <Items>
                <ToolStripMenuItem Text="File" >
                    <DropDownItems>
                        <ToolStripMenuItem Text="New" Click="MyForm.OpenClick"/>
                        <ToolStripMenuItem Text="Open" Click="MyForm.OpenClick"/>
                    </DropDownItems>
                </ToolStripMenuItem>
            </Items>
      </MenuStrip>
      <Panel Dock="Fill" BackColor="Color.Red">
          <Controls>
              <WebBrowser Name="browser1" Dock="Fill" />
          </Controls>
      </Panel>
      <StatusStrip />
    </Controls>
  </MyForm>
</XFGDocument>

根元素是 XFGDocument。在该标签上,您需要设置其名称和 NameSpaces 属性,以指定您需要从 XML 中使用的所有命名空间,每个命名空间之间用一个,(逗号)分隔。您还可以使用 CodeBehind 属性指定代码隐藏文件。在此示例中,文档的第一个子标签需要是一个表单。在此示例中,我使用了在代码隐藏文件中声明的类。MyForm 是一个从 System.Windows.Forms.Form 继承的类。接下来,是代码隐藏文件的源代码

using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace customNamespace
{    
    public class MyForm : Form
    {
        static MyForm MyFormIstance;
        
        public MyForm()
        {
            MyFormIstance = this;
        }
        
        public static void OpenClick(object sender,EventArgs e)
        {
            WebBrowser br = 
              (WebBrowser)MyFormIstance.Controls.Find("browser1", true)[0];
            
            br.Navigate("http://www.dotnetfireball.org");
        }
    }
}

源代码非常短且简单,您不需要成为专家才能使用此库创建 GUI;)。在 XML 代码中,如果您需要设置属性,可以将其作为属性来完成。目前,就这些了。如果您对该库有任何疑问,请随时与我联系。我计划在未来撰写更多关于此库的文章。目前,我的时间主要用于库的开发和其他工作;)

注意:要运行示例,请转到示例的 bin/debug 目录并执行 run.bat 文件。

© . All rights reserved.