自己動手寫UI庫——引入ExtJs(布局)


第一:

來看一下最終的效果
第二:
來看一下使用方法:
第三:
Component類代碼如下所示:
public class Component
    {  
       
        public Component()
        {
        }
        private string id;
        public string Id
        {
            get
            {
                return id;
            }
            internal set
            {
                id = value;
            }
        }
        private string region;
        public string Region
        {
            get
            {
                return region;
            }
            set
            {
                var str = string.Format("Ext.getCmp('{0}').setRegion('{1}'); ", this.Id, value);
                RenderContext.ExecScript(str);
                region = value;
            }
        }
        private int width;
        public int Width
        {
            get
            {
                return width;
            }
            set
            {
                var str = string.Format("Ext.getCmp('{0}').setWidth({1}); ", this.Id, value);
                RenderContext.ExecScript(str);
                width = value;
            }
        }
        private int height;
        public int Height
        {
            get
            {
                return height;
            }
            set
            {
                var str = string.Format("Ext.getCmp('{0}').setHeight({1}); ", this.Id, value);
                RenderContext.ExecScript(str);
                height = value;
            }
        }
    }
第一:
這是ExtJs里的一個基類,Ext里所有的界面元素都繼承自這個基類
第二:
Id,Width,Region,Height都是這個基類的屬性,在ExtJs中 Component類也包含這些屬性,當然還有很多其他的屬性,這里我們就沒有一一例舉了。
第三:
設置 Width,Region,Height這三個屬性的時候我們都讓瀏覽器執行了一段腳本,這段腳本讓ExtJs設置控件的相應屬性
第四:
Panel類的代碼
第一:
我們再這個控件類的構造函數里執行了JS代碼,並通過JS代碼創建了這個控件
第二:
創建完控件之后,就馬上獲取了這個控件的ID,這個ID是EXTJS自動生成的ID,與頁面上的其他控件是不會重復的
第三:
控件在界面上的ID獲取到之后,我們就賦給這個控件的基類的屬性
第五:
Viewport類的代碼
第一:
這個類的代碼的執行邏輯和panel代碼類的邏輯相似
第二:
這個類和Panel類都繼承自Container類
第六:
Container類的代碼
第一:
與Extjs相同Container類繼承自Compent類,也就是我們前面提到的控件的基類
第二:
我們再這個類中添加了Add方法,在這個方法里也是執行了一段JS函數,把一個控件添加到另一個控件中
第七:
工程的目錄結構:
第一:
名稱空間我們都加了NS后綴,這是為了使用方便
第八:
ExecScript方法的代碼:
第一:
這里的代碼和我們前面文章講到的不一樣,我這里改正用這種方式執行JS代碼了,只有這種方式,才能順利的得到JS的返回值
第二:
C#代碼讓瀏覽器執行了一個Exec的JS函數
第九:
Exec的JS方法的代碼
第一:
傳入參數就是我們想要執行的JS語句
第二:
用eval的方法執行這個JS語句,然后把返回值還給C#
 
 
好,本文大概就是這樣,喜歡我的文章,請幫忙點推薦------------------->


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM