簡體   English   中英

這是使用WPF從可停靠窗格顯示無模式對話框的一種方法嗎?

[英]Is this a way to show a modeless dialog from a dockable pane using WPF?

我正在構建一個Revit插件。 它由一個可停靠的窗格組成(除其他元素外)還具有一個按鈕。 當用戶單擊此按鈕時,我想打開一個新的單獨窗口。

目前,我創建了一個新的Window ,但是我不知道這是正確的方法,因為現在我在任務欄上看到兩個Revit圖標。 我沒有Revit用戶的經驗,我是Revit開發的新手,所以我不確定是否應該是這種情況(兩個圖標)並且聽起來很愚蠢,我沒有安裝隨機加載項的管理員權限並獲得預期的用戶體驗。

在此處輸入圖片說明

我使用以下代碼創建一個Window

ParametersMissingValueWindow parametersMissingValueWindow = new ParametersMissingValueWindow();
parametersMissingValueWindow.Show();

基於對我擁有的可停靠窗格的理解,我認為我不想創建另一個可停靠窗格,而只是創建一個簡單的無模式對話框。 我找不到使用WPF的任何示例。 因此,高度贊賞任何信息,無論這是要走的道路還是對實現這一目標的幫助。

Show方法采用可選的父窗口參數。 將Revit主窗口指定為父窗口,您的無模式對話將被識別為正在運行的Revit進程。 可從MainWindowHandle屬性訪問它。

您可以使用WPF設置要在revit中使用的窗口。

MyWPF menu = new menu();
System.Windows.Window wind = new System.Windows.Window();
wind.ShowDialog();    //--> the window shows up and make stuff for revit

如果您需要菜單是可固定的,請選中此

也許不是最新的,您將需要使代碼適應新的api。

var MyWindow = new MyWindow();
HwndSource hwndSource = HwndSource.FromHwnd(UIApplication.MainWindowHandle);
Window wnd = hwndSource.RootVisual as Window;
if (wnd != null)
{
    MyWindow.Owner = wnd;
    //MyWindow.ShowInTaskbar = false;
    MyWindow.Show();
}

不必為ShowInTaskbar屬性分配值,但是它實際上從一開始就實現了我想做的事情(在任務欄中只打開了一個程序),因此我將其保留為解決方案的一部分,但將其注釋掉。

非常感謝Jeremy Tammik指出了parent財產。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM