Xceed AvalonDock - Revit MainWindow.FindFirstChild returns 无

Xceed AvalonDock - Revit MainWindow.FindFirstChild returns nul

我是一名对 C# 比较陌生的架构师,我正在尝试在我自己的工具栏中实现 Ehsan Iran-Nejad 惊人的 PyRevit 彩色选项卡。

https://github.com/eirannejad/pyRevit/blob/12ecea9096bb649e2b6f084ba82ba1284bc78667/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Tab%20Coloring.smartbutton/script.py

https://github.com/eirannejad/pyRevit/blob/12ecea9096bb649e2b6f084ba82ba1284bc78667/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Tab%20Coloring.smartbutton/script.py

不幸的是,这将返回空值:

    public static Xceed.Wpf.AvalonDock.DockingManager GetDockingManager(UIApplication uiapp)
    {
        var wndRoot = (MainWindow)UIAppEventUtils.GetWindowRoot(uiapp);

        if (wndRoot != null)
        {
            return MainWindow.FindFirstChild<Xceed.Wpf.AvalonDock.DockingManager>(wndRoot);
        }
        return null;
    }

从外部命令启动:

[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class StartGroupingTabsExt : IExternalCommand
{
    public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
    {
        if(DocumentTabEventUtils.IsUpdatingDocumentTabs)
        {
            DocumentTabEventUtils.StopGroupingDocumentTabs();
        }
        else
        {
            DocumentTabEventUtils.StartGroupingDocumentTabs(commandData.Application);
        }        

        return Result.Succeeded;
    }
}

我不太明白哪里出了问题,如有任何建议,我们将不胜感激。

干杯,

马克

我在构建类似的东西时遇到过类似的事情。我从 nuget 引用了 xceed.wpf.avalondock 库,这就是导致它的原因。也许你做过同样的事情?如果我改为引用 Revit 安装文件夹中的 dll,它可以正常工作。