Xceed AvalonDock - Revit MainWindow.FindFirstChild возвращает нулевое значение - PullRequest
1 голос
/ 01 августа 2020

Я архитектор, относительно новичок в C#, я пытаюсь реализовать удивительные цветные вкладки PyRevit от Ehsan Iran-Nejad на моей собственной панели инструментов.

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

К сожалению, для меня это возвращает null:

    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;
    }
}

Я не совсем понимаю, что происходит не так, любой совет был бы очень признателен.

Ура,

Отметьте

1 Ответ

0 голосов
/ 01 августа 2020

У меня было нечто подобное, когда я строил что-то подобное. Я сослался на библиотеку xceed.wpf.avalondock из nuget, и это было причиной. Может, ты сделал то же самое? Если бы я вместо этого сослался на DLL, находящуюся в папке установки Revit, она работала без проблем.

...