26

ドッキング解除されたフローティング 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機能を追加するにはどうすればよいですか?

4

3 に答える 3

1

興味のある方のために、最新バージョンのAvalonDock(バージョン2)は、フローティングウィンドウのAeroスナップ機能をネイティブにサポートしています。AvalonDock 2.0はまだベータ版です。詳細: http ://avalondock.codeplex.com/ 新機能: http ://avalondock.codeplex.com/wikipage?title = Version2Concept

于 2012-04-02T20:38:25.363 に答える
1

ランタイムを使用して、外部プロセスを実行できます。

http://www.nirsoft.net/utils/nircmd.htmlからnircmd.exeをダウンロード し、.classファイルと同じディレクトリまたはWindowsのPATH環境変数にあることを確認します。

次に、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ブロックが必要になる場合があることに注意してください。

注:これは、ウィンドウがアクティブなウィンドウであることを前提としています。

于 2011-09-13T01:35:40.790 に答える
1

anon は次のように述べています。アクティブなウィンドウ。」</p>

vIBIUS は、「これにより、Windows キー + Shift および左/右オプションも無効になります!」</p>

Kermonk 氏は、「残念ながら、「ウィンドウを振って他のすべてのウィンドウを閉じる」機能も無効になります…」と述べています。</p>

これを試して:

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

ウィンドウを最大化し、ウィンドウを横にスナップするマウス アクションを無効にしますが、キーボード ショートカットは無効にします。AeroPeak または AeroShake には影響しません。また、「垂直方向のみのウィンドウの最大化」にも影響しません。

于 2011-10-21T19:09:27.223 に答える