Развернуть и Aero привязать на DockableFloatingWindow - PullRequest
26 голосов
/ 27 мая 2011

У меня есть следующий код, чтобы дать незакрепленному плавающему окну AvalonDock возможность максимизировать:

class MaximizableDockableContent : AvalonDock.DockableContent
{
    public MaximizableDockableContent()
        : base()
    {
         base.StateChanged += MaximizableDockableContent_StateChanged;
    }

    private void MaximizableDockableContent_StateChanged(
        object sender, RoutedEventArgs e)
    {
        MaximizableDockableContent mdc = (MaximizableDockableContent)sender;
        if (mdc.State == DockableContentState.DockableWindow)
        {
            base.FloatingWindowSizeToContent = SizeToContent.WidthAndHeight;
            FloatingDockablePane fdp = (FloatingDockablePane)base.Parent;
            DockableFloatingWindow dfw = (DockableFloatingWindow)fdp.Parent;

            //dfw.WindowState = WindowState.Maximized;
            dfw.WindowStyle = WindowStyle.ThreeDBorderWindow;
            dfw.ResizeMode = ResizeMode.CanResize;

            //disable minimize button
            ControlBox.SetHasMinimizeButton(dfw, false);
        }
    }
}

Как мне добавить к этому Aero Snap функциональность?

Ответы [ 3 ]

1 голос
/ 21 октября 2011

anon сказал: «К сожалению, также отключает Windows + стрелку вверх или вниз для Max./Min. активное окно. "

vIBIUS сказал: «Это также отключает опцию Windows Key + Shift и Left / Right!»

Кермонк сказал: «К сожалению, это также отключает функцию« встряхнуть окно, чтобы закрыть все другие окна »…»

Попробуйте это:

[HKEY_CURRENT_USER\Control Panel\Desktop]
"DockMoving"="0"

Это отключает действие мыши, чтобы максимизировать окна и привязывать окна в сторону, но не сочетания клавиш. Это не влияет на AeroPeak или AeroShake. Это также не влияет на «максимизацию окна только в вертикальном направлении».

1 голос
/ 03 апреля 2012

Для тех, кто заинтересован, последняя версия AvalonDock (версия 2) изначально поддерживает функцию аэросъемки плавающего окна.AvalonDock 2.0 все еще находится в бета-версии, более подробная информация: http://avalondock.codeplex.com/ Новые функции: http://avalondock.codeplex.com/wikipage?title=Version2Concept

1 голос
/ 13 сентября 2011

вы можете запустить внешний процесс, используя время выполнения:

, скачайте файл nircmd.exe из: http://www.nirsoft.net/utils/nircmd.html и убедитесь, что он находится в том же каталоге, что и файл .class, или в ПУТИ Windowsпеременная окружения

, затем используйте Runtime.exec () для ее запуска несколько раз:

Runtime r=Runtime.getRuntime();
r.exec("nircmd.exe sendkey lwin down");
r.exec("nircmd.exe sendkey "+direction+" press");
//change direction to "right" (for right side), "left" (for left side), or "up" (for full window).
r.exec("nircmd.exe sendkey lwin up");

обратите внимание, что это может вызвать IOException, поэтому может потребоваться блок try / catch.

примечание: предполагается, что окно является активным.

...