回覆列表
  • 1 # 路在何方20210218

    對於一般程式語言,執行分為3種:

    1)編譯成二進位制機器程式碼,由作業系統呼叫執行;典型的如C,C++,Delphi等.

    2)編譯成中間語言,由虛擬機器解釋來執行或及時編譯後執行(前者的典型是java,後者的典型是DotNet).

    3)不進行編譯,有直譯器邊解釋邊執行,比較典型的是VB和HTML,Javascript.等

    上邊這些與WPF有關係麼?其實是有的,至少原理上非常相似.我們來看看WPF的XAML的執行機制:

    1)首先是例項化頁面類;

    2)然後構建介面元素(控制元件樹),這裡很關鍵,因為xaml檔案裡有介面元素的描述性資訊,對於一個介面元素E:

    A)首先例項化E,知道介面元素的類名,利用反射機制很容易例項化該類.

    B)設定屬性,同樣利用反射機制,將字串描述的屬性值設定賦給例項,這個原理很簡單,但要做得很好,是需要一個簡單的直譯器的.

    C)屬性可以掛接,事件也當然可以動態掛接,但一般情況下,事件掛接時目標方法只能在頁面例項裡。

    D)到此,一個介面元素就記憶體例項化了,然後放入當前頁面的控制元件樹裡。例項化介面元素本來就是遞迴完成的,控制元件樹的完成比較容易。

    當然最後,會將有Name的元素例項賦給頁面類例項裡相應的成員變數,這樣頁面程式碼方法裡應用該控制元件的程式碼就能正常執行了。這種執行機制與上面提到的3種方式中的第3種方式非常類似。頁面元素屬性(包括事件)的描述和具體頁面程式碼分開的方式,很多地方都採用,比如Aspx,Dfm等。

  • 中秋節和大豐收的關聯?
  • 商用牛骨頭湯怎麼熬?