正确退出Revit的wpf插件

时间:2016-01-06 18:58:27

标签: c# wpf plugins exit revit

我正在为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();

2 个答案:

答案 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