天天看點

WPF用ShowDialog()彈出窗體時控制該窗體的顯示位置,并傳值回父窗體

原文:http://blog.csdn.net/kiss0622/article/details/5852153

方法一:

1.父視窗代碼

Window1.xaml.cs

2.子視窗代碼

Window2.xaml.cs

 如果使用MVVM,目前按鈕有command事件,并且command中有判斷條件,這裡應該相應的做修改,示例如下:

選中DataGrid某行,才允許繼續往下執行,即執行父視窗的if (w2.ShowDialog()==true){}内的代碼,否則,沒選中也執行

方法二:使用事件(MVVM下)

場景:通過指令,調出查詢視窗,将選中項資料傳回

父視窗的VM

 存在的隐患:

隻要視窗關閉,都會執行v_Closed

場景示例:選中DataGrid某行,點選确認按鈕,确認事件中通過一定的判斷規則,符合條件則執行v_Closed

可能隐患:使用者選中DataGrid某行,但是點選了取消按鈕,并無驗證“确認事件”中的判斷規則,執行v_Closed導緻出錯

解決:設定共有變量進行狀态控制;在v_Closed中設定相應的判斷(不推薦,如産生變更可能因忘記修改導緻不同步,除非是特簡單的條件);