天天看點

wpf 第一天

這些天從項目上接觸到了wpf,感覺有必要做一個筆記,首篇還是聊聊基本的概念,要學習wpf,我們需要采用webform的思維來考慮問題。

一:App環境承載

     我們都知道,console和winform程式的入口函數都是main,wpf同樣也不例外,好了,我們建立一個wpf的程式,vs自動給我們生成了一個

MainWindow.xaml和App.xaml檔案。

wpf 第一天

微軟官方說wpf程式是從Application開始的,既然是開始總有個入口點吧,奇怪的是我們并沒有發現Main函數,程式又是如何Run起來的呢?

wpf 第一天

其實,wpf為了簡化我們的工作,把一些機械性的代碼透明了,那麼我們如何找到這個Main函數呢?很簡單,我們編譯一下程式,發現

App.xaml最後生成了App.g.cs的部分類,并且發現StartupUri是MainWindow.xaml,也就是說程式一運作,MainWindow.xaml将會啟動。

wpf 第一天

二:Wpf中Application的生命周期

    我們知道webform中的Global檔案定義了一個應用程式的全局生命周期,或許有人問,生命周期能夠幹些什麼,其實幹的事情可多着呢,

比如我們可以做一些身份驗證,或者一些資訊的初始化,那麼wpf中到底有哪些對應的方法和事件呢?

1:OnStartup方法    =>   Startup 事件

     這個就見名識意了,也就是上面一幅圖中的app.Run()的時候觸發。

2: OnSessionEnding方法 => SessionEnding 事件

     系統關機前調用。

3:OnExit方法 => Exit事件

     應用程式關閉前調用。

4:OnActivated方法 =>  Activated 事件

     應用程式獲得焦點的時候觸發。

5:OnDeactivated方法 => DeActivated事件

     應用程式失去焦點的時候觸發。

wpf 第一天
wpf 第一天

三:全局異常擷取

     在webform中的Global檔案中有一個Application_Error方法,專門用來捕獲整個應用程式的異常,以至于不會出現“黃白頁”給使用者,以此來提高

系統的健壯性和安全性,那麼wpf中也有類似的方法嗎?當然,wpf跟webform神似,他有的我也有,這裡是一個DispatcherUnhandledException

事件,然後我們在OnStartup注冊一下就Ok了。

wpf 第一天
wpf 第一天

好,下面我們做了示例:

首先我們拖一個button,事件進行中故意抛出異常。

wpf 第一天
wpf 第一天

然後我們在Application_Error中進行處理,當然實際應用中應該是記一些log日志。

wpf 第一天
wpf 第一天

最後看一下效果,注意,我們的程式并沒有崩潰。

wpf 第一天

繼續閱讀