Это способ показать немодальное диалоговое окно из закрепляемой панели с помощью WPF? - PullRequest
0 голосов
/ 25 марта 2019

Я создаю плагин Revit. Он состоит из закрепляемой панели, которая (среди прочих элементов) имеет кнопку. Я хочу открыть новое отдельное окно, когда пользователь нажимает эту кнопку.

В данный момент я создаю новый Window, но я не знаю, правильный ли это путь, потому что теперь я вижу две иконки Revit на панели задач. У меня нет опыта работы в качестве пользователя Revit, я новичок в разработке Revit, поэтому я не уверен, если это так (две иконки) и как бы глупо это не звучало, у меня нет прав администратора для установки случайных надстроек и получить ощущение ожидаемого пользовательского опыта.

enter image description here

Я создаю Window, используя следующий код:

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

Основываясь на понимании имеющейся у меня панели закрепления, я думаю, что я не хочу создавать другую панель закрепления, а просто простой немодальный диалог. Я не смог найти ни одного примера с использованием WPF. Следовательно, любая информация о том, идет ли этот путь или о том, как этого добиться, высоко ценится.

Ответы [ 3 ]

1 голос
/ 26 марта 2019

Метод Show принимает необязательный аргумент родительского окна.Укажите главное окно Revit в качестве родительского, и ваш немодальный диалог будет распознан как принадлежащий запущенному процессу Revit.Он доступен из MainWindowHandle объекта .

0 голосов
/ 30 марта 2019
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, но оно фактически выполняет то, что я хотел сделать с самого начала (на панели задач открыта только одна программа), поэтому я оставил его как часть решения, но прокомментировал вне.

Большое спасибо Джереми Таммику за то, что он указал на свойство parent.

0 голосов
/ 25 марта 2019

Вы можете использовать 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.

...