我正在构建Revit插件。它由一个可停靠的窗格组成(除其他元素外)还具有一个按钮。当用户单击此按钮时,我想打开一个新的单独窗口。
目前,我创建了一个新的Window
,但是我不知道这是否是正确的方法,因为现在我在任务栏上看到两个Revit图标。我没有Revit用户的经验,我是Revit开发的新手,所以我不确定是否应该是这种情况(两个图标)并且听起来很愚蠢,我没有安装随机加载项的管理员权限并获得预期的用户体验。
我使用以下代码创建Window
:
ParametersMissingValueWindow parametersMissingValueWindow = new ParametersMissingValueWindow();
parametersMissingValueWindow.Show();
基于对我拥有的可停靠窗格的理解,我认为我不想创建另一个可停靠窗格,而只是创建一个简单的无模式对话框。我找不到使用WPF的任何示例。因此,高度赞赏任何信息,无论这是要走的道路还是对实现这一目标的帮助。
答案 0 :(得分:1)
Show
方法采用可选的父窗口参数。将Revit主窗口指定为父窗口,您的无模式对话将被识别为正在运行的Revit进程。可从MainWindowHandle
property进行访问。
答案 1 :(得分:0)
您可以使用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
如果您需要菜单是可固定的,请选中此source。
可能不是最新的,您将需要使代码适应新的api。
答案 2 :(得分:0)
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
属性。