我正在构建一个Revit插件。它由一个可停靠的窗格组成(在其他元素中)有一个按钮。我想在用户单击此按钮时打开一个新的单独窗口。
目前,我创建了一个新的Window
,但我不知道这是否是正确的方法,因为现在我在任务栏上看到两个Revit图标。我没有作为Revit用户的经验,我是Revit开发的新手,所以我不确定是否应该是这种情况(两个图标)并且听起来很傻,我没有管理员权限来安装随机插件并获得预期的用户体验感。
我使用以下代码创建一个Window
:
ParametersMissingValueWindow parametersMissingValueWindow = new ParametersMissingValueWindow();
parametersMissingValueWindow.Show();
根据我对可停靠窗格的理解,我想我不想创建另一个可停靠的窗格,而只是一个简单的无模式对话框。我无法使用WPF找到任何示例。因此,我们高度赞赏任何有关这是如何实现或帮助如何实现这一目标的信息。
Show
方法采用可选的父窗口参数。将Revit主窗口指定为父窗口,您的无模式对话将被识别为属于正在运行的Revit进程。可从MainWindowHandle
property抵达。
您可以使用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。
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
的财产。