我有以下代码为未停靠的浮动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功能?
答案 0 :(得分: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块。
注意:这假定窗口是活动窗口。
答案 1 :(得分:1)
anon说“不幸的是,禁用,Windows +向上或向下箭头为Max./Min。活动窗口。“
vIBIUS说“这也禁用了Windows Key + Shift和Left / Right选项!”
Kermonk说“不幸的是,这也禁用了”关闭所有其他窗口的摇动窗口“功能......”
试试这个:
[HKEY_CURRENT_USER\Control Panel\Desktop]
"DockMoving"="0"
它禁用鼠标操作以最大化窗口并将窗口捕捉到侧面而不是键盘快捷键。它不会影响AeroPeak或AeroShake。它也不会影响'仅在垂直方向上最大化窗口'。
答案 2 :(得分:1)
谁感兴趣的是最新版本的AvalonDock(版本2)本身支持浮动窗口航空快照功能。 AvalonDock 2.0仍处于测试阶段,更多信息: http://avalondock.codeplex.com/ 新功能: http://avalondock.codeplex.com/wikipage?title=Version2Concept