WPF入門教程系列五 Window 介紹

2022-06-08 03:27:10 字數 3870 閱讀 4636

一、窗體類基本概念

對於wpf應用程式,在visual studio和expression blend中,自定義的窗體均繼承system.windows.window類。使用者通過視窗與 windows presentation foundation (wpf) 獨立應用程式進行互動。 視窗的主要用途是承載視覺化資料並使使用者可以與資料進行互動的內容。獨立 wpf 應用程式使用 window 類來提供它們自己的視窗。在 wpf 中,可以使用**或 xaml 標記來實現視窗的外觀和行為。我們這裡定義的窗體也由這兩部分組成:

1、 xaml檔案,在這裡面通常全部寫ui的東西,包括視窗的外觀,控制項等。   

"

"xmlns="

"xmlns:x="

"title="

windowthd

" height="

300" width="

400">

"lblhello

">歡迎你光臨wpf的世界!

"btnthd

" click="

btnthd_click

" >多執行緒同步測試

"" click="

" >begininvoke 非同步呼叫

2、視窗介面中的各種行為,則由後台**檔案決定。

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading;

using

system.threading.tasks;

using

system.windows;

using

system.windows.controls;

using

system.windows.data;

using

system.windows.documents;

using

system.windows.input;

using

system.windows.media;

using

system.windows.media.imaging;

using

system.windows.shapes;

using

system.windows.threading;

namespace

private

void

modifyui());}

private

void btnthd_click(object

sender, routedeventargs e)

private

sender, routedeventargs e)

));}).start();}}

}

二、窗體的生命週期和所有類一樣,視窗也有生存期,在第一次例項化視窗時生存期開始,然後就可以顯示、啟用和停用視窗,直到最終關閉視窗。

1、顯示窗體

2、窗體的啟用

在首次開啟乙個視窗時,它便成為活動視窗(除非是在 showactivated 設定為 false 的情況下顯示)。 活動視窗是當前正在捕獲使用者輸入(例如,鍵擊和滑鼠單擊)的視窗。 當視窗變為活動視窗時,它會引發 activated 事件。

當第一次開啟視窗時,只有在引發了 activated 事件之後,才會引發 loaded 和 contentrendered 事件。 記住這一點,在引發 contentrendered 時,便可認為視窗已開啟。 

視窗變為活動視窗之後,使用者可以在同乙個應用程式中啟用其他視窗,還可以啟用其他應用程式。 當這種情況出現時,當前的活動視窗將停用,並引發 deactivated 事件。 同樣,當使用者選擇當前停用的視窗時,該視窗會再次變成活動視窗並引發 activated。 

3、關閉窗體

當使用者關閉視窗時,視窗的生命便開始走向終結。

4、窗體的生命週期。如下圖。

為了證實上面的結論,我們用下面的**進行測試:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading;

using

system.threading.tasks;

using

system.windows;

using

system.windows.controls;

using

system.windows.data;

using

system.windows.documents;

using

system.windows.input;

using

system.windows.media;

using

system.windows.media.imaging;

using

system.windows.shapes;

using

system.windows.threading;

namespace

void windowthd_sourceinitialized(object

sender, eventargs e)

void windowthd_unloaded(object

sender, routedeventargs e)

void windowthd_closed(object

sender, eventargs e)

void windowthd_loaded(object

sender, routedeventargs e)

void windowthd_deactivated(object

sender, eventargs e)

void windowthd_contentrendered(object

sender, eventargs e)

void windowthd_closing(object

sender, system.componentmodel.canceleventargs e)

void windowthd_activated(object

sender, eventargs e)

private

void

modifyui());}

private

void btnthd_click(object

sender, routedeventargs e)

private

sender, routedeventargs e)

));}).start();}}

}

開啟窗體的事件執行順序為:如下圖。

wpf窗體的詳細的屬性、方法、事件請參考msdn,有很多的屬性、方法、事件與windows應用程式中 system.windows.forms.form類頗為相似。

WPF入門教程系列(4)

mvvmlight安裝之後,我們可以看到簡易的框架布局,生成了乙個viewmodel資料夾,viewmodel層的內容都放在這邊,除了main物件的viewmodel之外,還包含乙個viewmodellocator檔案,用來注入當前的viewmodel全域性例項。一 先來說說分層結構 如圖 1 vi...

WPF入門教程系列(5)

很簡單,僅僅是包含乙個實體物件,這邊注意的的是那他繼承了乙個父類 observableobject,這個父類的作用就是保證能夠檢測屬性是否被改變。其實在繼承的過程中,可能會遇到乙個問題 observableobject無法被繼承,解決方案是加乙個using galasoft.mvvmlight 命名...

WPF入門教程系列一

一 前言 公司專案基於wpf開發,最近專案上線有點空閒時間寫一篇基於wpf的基礎教材,wpf也是近期才接觸,學習wpf也是在網上查資料與微軟的msdn進行學習,寫本部落格的目為了溫故而知新把學習過程記錄下來,以備後查。學習wpf的基礎知識 1 wpf是微軟提供的一種用來開發 桌面應用 的技術 框架 ...