Domanda Ingrandisci e Aero snap su DockableFloatingWindow


Ho il seguente codice per dare a una finestra di AvalonDock mobile disancorata la possibilità di massimizzare:

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

Come faccio ad aggiungere Aero Snap funzionalità a questo?


26
2018-05-27 16:58


origine


risposte:


Per chi è interessato l'ultima versione di AvalonDock (versione 2) supporta in modo nativo la funzione di snap aero della finestra mobile. AvalonDock 2.0 è ancora in beta, maggiori informazioni: http://avalondock.codeplex.com/ Nuove caratteristiche: http://avalondock.codeplex.com/wikipage?title=Version2Concept


1
2018-04-02 20:38



potresti eseguire un processo esterno, usando il runtime:

scarica nircmd.exe da: http://www.nirsoft.net/utils/nircmd.html e assicurarsi che sia nella stessa directory del file .class o nella variabile di ambiente PATH di Windows

quindi utilizzare Runtime.exec () per eseguirlo più volte:

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

si noti che questo può generare una IOException, quindi potrebbe essere necessario un blocco try / catch.

nota: ciò presuppone che la finestra sia quella attiva.


1
2017-09-13 01:35



anon ha detto "Purtroppo è anche disabilitato, Windows + freccia su o giù per Max./Min. la finestra attiva. "

VIBIUS ha detto "Questo disattiva anche l'opzione Tasto Windows + Maiusc e Sinistra / Destra!"

Kermonk ha dichiarato: "sfortunatamente questo disabilita anche la funzione" scuota la finestra per chiudere tutte le altre finestre "..."

Prova questo:

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

Disabilita l'azione del mouse per massimizzare le finestre e fa scattare le finestre sul lato ma non le scorciatoie da tastiera. Non ha effetto su AeroPeak o AeroShake. Inoltre, non influisce sulla "massimizzazione di una finestra solo in direzione del verticle".


1
2017-10-21 19:09