這些天從項目上接觸到了wpf,感覺有必要做一個筆記,首篇還是聊聊基本的概念,要學習wpf,我們需要采用webform的思維來考慮問題。
一:app環境承載
我們都知道,console和winform程式的入口函數都是main,wpf同樣也不例外,好了,我們建立一個wpf的程式,vs自動給我們生成了一個
mainwindow.xaml和app.xaml檔案。

微軟官方說wpf程式是從application開始的,既然是開始總有個入口點吧,奇怪的是我們并沒有發現main函數,程式又是如何run起來的呢?
其實,wpf為了簡化我們的工作,把一些機械性的代碼透明了,那麼我們如何找到這個main函數呢?很簡單,我們編譯一下程式,發現
app.xaml最後生成了app.g.cs的部分類,并且發現startupuri是mainwindow.xaml,也就是說程式一運作,mainwindow.xaml将會啟動。
二:wpf中application的生命周期
我們知道webform中的global檔案定義了一個應用程式的全局生命周期,或許有人問,生命周期能夠幹些什麼,其實幹的事情可多着呢,
比如我們可以做一些身份驗證,或者一些資訊的初始化,那麼wpf中到底有哪些對應的方法和事件呢?
1:onstartup方法 => startup 事件
這個就見名識意了,也就是上面一幅圖中的app.run()的時候觸發。
2: onsessionending方法 => sessionending 事件
系統關機前調用。
3:onexit方法 => exit事件
應用程式關閉前調用。
4:onactivated方法 => activated 事件
應用程式獲得焦點的時候觸發。
5:ondeactivated方法 => deactivated事件
應用程式失去焦點的時候觸發。
三:全局異常擷取
在webform中的global檔案中有一個application_error方法,專門用來捕獲整個應用程式的異常,以至于不會出現“黃白頁”給使用者,以此來提高
系統的健壯性和安全性,那麼wpf中也有類似的方法嗎?當然,wpf跟webform神似,他有的我也有,這裡是一個dispatcherunhandledexception
事件,然後我們在onstartup注冊一下就ok了。
好,下面我們做了示例:
首先我們拖一個button,事件進行中故意抛出異常。
然後我們在application_error中進行處理,當然實際應用中應該是記一些log日志。
最後看一下效果,注意,我們的程式并沒有崩潰。