DockPanel Suite: динамически устанавливаемые поля MaximizeBox и MinimizeBox FloatWindow

Я новичок в DockPanel Suite. Я создал пользовательские FloatWindow и IFloatWindowFactory следующим образом:

public class MapFloatWindowFactory : DockPanelExtender.IFloatWindowFactory
{
    public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds)
    {
        return new MapFloatWindow(dockPanel, pane, bounds);
    }

    public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane)
    {
        return new MapFloatWindow(dockPanel, pane);
    }
}
public class MapFloatWindow : FloatWindow
{
    public MapFloatWindow(DockPanel dockPanel, DockPane pane) : base(dockPanel, pane)
    {
        FormBorderStyle = FormBorderStyle.Sizable;
    }

    public MapFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds) : base(dockPanel, pane, bounds)
    {
        FormBorderStyle = FormBorderStyle.Sizable;
    }
}

Однако при таком подходе MaximizeBox а также MinimizeBox собственность моего DockContent не соблюдается Как бы я это реализовал?

1 ответ

Согласно документации DockPanel Suite ( http://docs.dockpanelsuite.com/en/latest/tutorials/customizing-floatwindow.html), вам действительно необходимо создать собственную фабрику плавающих окон:

Затем создайте фабричный класс для создания CustomFloatWindow. Это делается путем реализации интерфейса IFloatWindowFactory,

public class CustomFloatWindowFactory :
        DockPanelExtender.IFloatWindowFactory
{
    public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds)
    {
        return new CustomFloatWindow(dockPanel, pane, bounds);
    }

    public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane)
    {
        return new CustomFloatWindow(dockPanel, pane);
    }
} 

Наконец, присоедините новую фабрику к элементу управления DockPanel,

this.dockPanel.Extender.FloatWindowFactory = new CustomFloatWindowFactory();
Другие вопросы по тегам