wpf aero maximize avalondock

wpf - Maximizar y ajustar aero en DockableFloatingWindow



maximize avalondock (3)

Para quien esté interesado, la última versión de AvalonDock (versión 2) admite de forma nativa la función de aero snap de ventana flotante. AvalonDock 2.0 aún está en versión beta, más información: http://avalondock.codeplex.com/ Nuevas características: http://avalondock.codeplex.com/wikipage?title=Version2Concept

Tengo el siguiente código para dar a una ventana de AvalonDock flotante no acoplada 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 hago para agregar la funcionalidad Aero Snap a esto?


Podrías ejecutar un proceso externo, usando runtime:

descargue nircmd.exe desde: http://www.nirsoft.net/utils/nircmd.html y asegúrese de que esté en el mismo directorio que el archivo .class o en la variable de entorno PATH de Windows

luego usa 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 generar una excepción IOException, por lo que podría ser necesario un bloque try / catch.

nota: esto asume que la ventana es la activa.


anon dijo: “Desafortunadamente también está deshabilitado, Windows + Flecha arriba o abajo para Máx. / Mín. La ventana activa ".

vIBIUS dijo: "Esto también desactiva la tecla de Windows + Mayús y las opciones de izquierda / derecha".

Kermonk dijo que "desafortunadamente eso también desactiva la función" sacudir la ventana para cerrar todas las demás ventanas "..."

Prueba esto:

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

Desactiva la acción del mouse para maximizar las ventanas y ajustar las ventanas al lado, pero no los atajos de teclado. No afecta a AeroPeak o AeroShake. Tampoco afecta a ''maximizar una ventana solo en la dirección de un artículo''.