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