我正在为Revit插件工作。 Revit仅允许dll类型的插件,我为gui选择了c#和wpf。我本身无法初始化wpf所以我需要将它作为内容包含在system.windows.window中。 现在如果我用右上方的X程序关闭那个窗口继续(循环处理等),它就不会被终止。 Window.close()再次关闭窗口而不是它自己的应用程序。 我应该如何退出我的应用程序,而不是让它潜伏在阴影中?
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class FDNMain : IExternalCommand
{
public Result Execute(ExternalCommandData CommandData, ref string message, ElementSet elements)
{
FDNControl wpfControl = new FDNControl();
return Result.Succeeded;
}
}
上面是Revit外部命令类,它无法初始化(显示)wpfControl。所以我需要用一个System.Windows.Window包装wpfcontrol,如下所示:
Window hostWindow = new Window();
hostWindow.Content = wpfControl;
hostWindow.Show();
答案 0 :(得分:0)
好的,我明白了。 Visual Studio中没有用于类库的XAML窗口模板,但您可以像创建一样使用UserControl,然后将XAML中的object
标记更改为string
。
您还需要在.xaml.cs中更改它(您也可以删除它,因为它是一个部分类,而父类隐含在XAML中)。之后,您可以在窗口上拨打UserControl
。
答案 1 :(得分:0)
我定义了全局静态变量,当主机窗口关闭时,该变量设置为true。并设置此条件以在while语句中检查以便循环继续。如:
Sub Delete_Multiple_Rows (m as Integer, n as Integer)
Rows(m & ":" & n).EntireRow.Delete
End Sub