Максимизировать и Aero привязать к DockableFloatingWindow
У меня есть следующий код, чтобы дать открытому плавающему окну 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?
Ответы
Ответ 1
Для кого интересует последняя версия AvalonDock (версия 2), изначально поддерживает функцию автоматической привязки плавающего окна.
AvalonDock 2.0 все еще находится в стадии бета-тестирования, больше информации:
http://avalondock.codeplex.com/
Новые возможности:
http://avalondock.codeplex.com/wikipage?title=Version2Concept
Ответ 2
вы можете запустить внешний процесс, используя runtime:
загрузить nircmd.exe из: http://www.nirsoft.net/utils/nircmd.html
и убедитесь, что он находится в том же каталоге, что и файл .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.
note: это предполагает, что окно является активным.
Ответ 3
anon сказал: "К сожалению, также отключено, стрелка Windows + Вверх или Вниз для Max./Min. активное окно".
vIBIUS сказал: "Это также отключает ключ Windows + Shift и Left/Right!"
Кермонк сказал: "К сожалению, это также отключает функцию" встряхнуть окно, чтобы закрыть все остальные окна "..."
Попробуйте следующее:
[HKEY_CURRENT_USER\Control Panel\Desktop]
"DockMoving"="0"
Он отключает действие мыши, чтобы максимизировать окна и привязывать окна в сторону, но не сочетания клавиш. Это не влияет на AeroPeak или AeroShake. Это также не влияет на максимизацию окна только в направлении вертикали.