Maximizar y Aero snap en ventana flotante acoplable


Tengo el siguiente código para darle a una ventana AvalonDock flotante desacoplada la capacidad de maximizar:

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

¿Cómo puedo agregar la funcionalidad Aero Snap a esto?

Author: sclv, 2011-05-27

3 answers

Para quién está interesado la última versión de AvalonDock (versión 2) es compatible de forma nativa con la función floating window aero snap. AvalonDock 2.0 todavía está en beta, más información: http://avalondock.codeplex.com / Novedad: http://avalondock.codeplex.com/wikipage?title=Version2Concept

 1
Author: adospace,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-02 20:38:25

Puede ejecutar un proceso externo, usando runtime:

Descargar nircmd.exe de: http://www.nirsoft.net/utils/nircmd.html y asegúrese de que está en el mismo directorio que el .archivo de clase o en la variable de entorno windows PATH

Luego use Runtime.exec() para ejecutarlo varias veces:

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");

Tenga en cuenta que esto puede lanzar una IOException, por lo que puede ser necesario un bloque try/catch.

Nota:esto asume que la ventana es la activa.

 1
Author: Jakob Weisblat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-13 01:35:40

Anon dijo "Desafortunadamente también se desactiva, Windows + Flecha arriba o abajo para Max./ Min. la ventana activa."

VIBIUS dijo " Esto también desactiva la tecla de Windows + Mayús y la opción Izquierda/Derecha!"

Kermonk dijo "desafortunadamente, eso también deshabilita la función" agitar la ventana para cerrar todas las demás ventanas "feature"

Prueba esto:

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

Desactiva la acción del ratón para maximizar las ventanas y ajustar las ventanas a un lado, pero no los atajos de teclado. No afecta a AeroPeak o AeroShake. Tampoco afecta a "maximizar una ventana solo en dirección vertical".

 1
Author: Cek Magdurlari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-22 07:31:07