DockPanel Suite: динамически установить MaximizeBox и MinimizeBox в FloatWindow - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в 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 Ответ

0 голосов
/ 28 июля 2018

В соответствии с документацией 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();
...