相信不少學習和開發wpf項目的同窗都瞭解過mvvm模式,一樣,在mvvm模式下會有一個不可忽視的問題,就是怎麼在xaml中彈出窗體,而不破壞MVVM自己的結構。express
關於彈出窗體的方式仍是不少的,本文先講一下用觸發器作處理。框架
咱們先要在xaml中引用mvvm
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"學習
須要System.Windows.Interactivity.dll 這個文件能夠在blend的安裝目錄搜到,若是沒有網上去下載xml
圖中紅框標識的就是自定義的行爲觸發器,在點擊菜單的時候彈出對應類型的窗體。觸發器以下:對象
繼承自triggeractionblog
重寫Invoke方法繼承
經過WindowType屬性獲取到當前窗體的類型,這個很重要。這個可讓咱們根據窗體的類型去建立窗體對象,而後彈出窗體。開發
根據窗體類型建立窗體的實例對象,而後去window.Show()就能夠了。it
是否是很簡單?固然這只是簡單的處理,咱們把這個觸發器提放到公共的模塊中,經過在xaml調用就能夠實現了,豐富了框架的內容,提煉了公共的功能,簡化了界面的代碼,一舉多得。
後面還有新窗體的傳參,窗體綁定vm給vm傳遞參數,彈出窗體處理完成以後的結果返回,返回後本窗體的業務處理等等各類須要處理的狀況,靜待後續哦。
感興趣的小夥伴加下方的羣,歡迎討論。