在WPF中使用MVVM的方式關閉視窗

2022-07-23 22:54:30 字數 910 閱讀 1898

在wpf程式中經常需要用彈出視窗的形式向使用者確認操作,使用者閱讀完相關資訊後,點選上面的ok或者cancel按鈕來關閉視窗,再進行後續操作。當使用mvvm設計模式時,ok和cancel會binding到viewmodel中的相關屬性上,因而在使用者點選了ok或cancel之後,我們希望能夠在viewmodel中關閉這個彈窗並返回使用者的選擇結果,但是由於window類本身所帶的屬性dialogresult不是乙個dependency proerty,我們也就不能把它binding到乙個viewmodel屬性上,再通過設定該屬性來關閉視窗,那麼我們該如何在viewmodel關閉該視窗呢?

這裡所講的一種解決方案是使用attached property。如下所示我們建立了乙個靜態類,它包含乙個attached property:dialogcloser.dialogresult。

public static class dialogcloser

}public static void setdialogresult(window target, bool? value)

}

在使用時,只需要把這個屬性attach到相關視窗上,並binding到後台viewmodel的屬性上即可。下面是乙個例子,完整**請參見 :

在 WPF 程式中使用 MVVM 模式

mvvm 模式是乙個很久之前的技術了,最近因為乙個專案的原因,需要使用 wpf 技術,所以,重新翻出來從前的一段程式,重溫一下當年的技術。mvvm 實際上涉及三個部分,model,view 和 viewmodel 三者的關係如下圖所示。在三部分的關係中,檢視顯示的內容和操作完全依賴於 viewmod...

在Visual Studio中使用Git 關閉

作為乙個長期的visual sourcesafe使用者 和仇恨 我正在討論與同事轉換到svn 他建議改用git 顯然,它可以在沒有 伺服器的情況下用作點對點 我們是乙個3開發團隊 我無法找到任何關於將git與visual studio整合的工具,但這樣的事情是否存在?在visual studio中使...

在WPF中使用ImageBox控制項

文章參考於 還可參考 首先是安裝並配置emgucv。由於imagebox控制項只支援windowsform不支援wpf。所以我們需要在wpf平台上載入windows form,然後再載入imagebox的控制項。首先,需要向專案中的reference 引用 新增兩個dll,乙個是.net庫中的sys...