簡體   English   中英

在C#中使用XML文件創建GUI

[英]Creating GUI using XML file in C#

如何在C#中使用XML文件創建自動GUI? 我是否應該為文件編寫一個解析器並為文件的結構定義某種“協議”,然后在解析之后-手動創建GUI控件(與文件中的數據有關)?

或者,還有更好的方法? .NET環境中是否有工具或內置代碼可以自動為我執行此操作?

(我目前正在使用win窗體,但是我願意考慮任何其他技術-只要MONO支持該技術,因為該代碼也應該可以移植到Linux)。

Glade是RAD的一種工具,可用於GTK +工具箱和GNOME桌面環境的快速,輕松開發用戶界面。

Glade中設計的用戶界面另存為XML,通過使用GtkBuilder GTK +對象,應用程序可以根據需要動態加載這些用戶界面。

通過使用GtkBuilder,Glade XML文件可以在多種編程語言中使用,包括C,C ++,C#,Vala,Java,Perl,Python等。

我在C#中使用了林間空地,並且對結果感到滿意。 Glade可能不會直接適合您,但是您至少可以從中借鑒一些想法。

如果要使用XML,那么您應該真正了解XML模式-這些是描述XML文件內容的XML文件,DevStudio(和其他編輯器)可以讀取它們並進行自動補全,這很有用。 此外,您可以根據架構驗證XML,以確保內容不包含任何結構性錯誤。

同樣,正如Paul所寫的那樣,XAML是XML系統,但是您需要使用WPF框架來對其進行解析。

WPF使用xml定義大多數東西,即xaml。

“ .NET環境中是否存在可以自動為我執行此操作的工具或內置代碼?”

在code.google.com上,圍繞XULRunner的.NET有各種包裝。

查看:

https://social.msdn.microsoft.com/Forums/en-US/554eefae-429f-495c-aee0-b2e971494ed0/how-do-i-create-a-gui-which-reads-xml-file-and-增加-控制到它,在運行時?論壇= csharplanguage

using System;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Linq;

namespace WindowsFormsApplication_DynamicGUIFromXML
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        XDocument guiConfig = XDocument.Load(@"../../Gui.xml");

        foreach (XElement item in from y in guiConfig.Descendants("Item") select y)
        {
            Control tmp = new Control();
            switch (item.Attribute("type").Value)
            {
                case "Button":
                    tmp = new Button();
                    break;
                case "TextBox":
                    tmp = new TextBox();
                    break;
            }

            tmp.Name = item.Attribute("name").Value;
            tmp.Text = item.Attribute("text").Value;
            tmp.Location = new Point(Int32.Parse(item.Attribute("x").Value), Int32.Parse(item.Attribute("y").Value));
            Controls.Add(tmp);
        }

    }
    }
 }

// ***********************************************
// Contents of Gui.xml
// ***********************************************
//<?xml version="1.0" encoding="utf-8" ?>
//<Gui>
//  <Item type="Button" name="foo" text="bar" x="100" y="100"  />
//  <Item type="TextBox" name="foo2" text="bar2" x="200" y="200"  />
//</Gui>
// ***********************************************

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM