WPF MVVM 中怎樣在ViewModel總打開的對話框在窗體之前

今天在WPF的項目中,寫打印插件,在ViewModel中對需要彈出打印對話框,而對話框如果沒有Owner所屬的時候經常會被當前應用程序遮住,導致我都不知道到底彈出來沒有!

參照:http://www.codeproject.com/Articles/20347/WebControls/後,果斷順利通過。

第一步定義WindowWrapper類:實現System.Windows.Forms.IWin32Window接口

/// <summary>

/// 句柄轉換IWin32Window類

/// </summary>

public class WindowWrapper : System.Windows.Forms.IWin32Window

{

/// <summary>

/// 構造函數

/// </summary>

/// <param name="handle">句柄</param>

public WindowWrapper(IntPtr handle)

{

_hwnd = handle;

}

 

public IntPtr Handle

{

get { return _hwnd; }

}

 

private IntPtr _hwnd;

}


第二步通過應用程序名稱查詢獲得句柄,這部分代碼我是寫在ViewModel中的


 

private void ExecuteShowDialogCommand()

{

Process[] procs = Process.GetProcessesByName("程序進程");

)

{

IntPtr hwnd = procs[].MainWindowHandle;

var printPreviewDocument = new PrintPreviewDialog();

printPreviewDocument.ShowDialog(new WindowWrapper(hwnd));

}

else

{

MessageBox.Show("無此進程");

}

}

如果是對話框的話同樣道理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章