【发布时间】:2014-08-30 13:08:37
【问题描述】:
我有一个自定义标题栏,并且窗口样式设置为无。单击标题栏时,我检查是否是双击(即窗口最大化和恢复),如果没有双击,我会执行Window.DragMove。这非常适合捕捉到侧面和顶部。但是当我尝试在窗口最大化时拖动窗口(这通常会恢复窗口),它什么也没做。这是我的代码:
static Window Window { get { return Application.Current.MainWindow; } }
/// <summary>
/// TitleBar_MouseDown - Drag if single-click, resize if double-click
/// </summary>
private static void TitleBar_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
if (e.ClickCount == 2)
{
AdjustWindowSize();
}
else
{
Window.DragMove();//Here is where I do the drag move
}
}
}
/// <summary>
/// Adjusts the WindowSize to correct parameters when Maximize button is clicked
/// </summary>
internal static void AdjustWindowSize()
{
if (Window.WindowState == WindowState.Maximized)
{
SystemCommands.RestoreWindow(Window);
}
else
{
SystemCommands.MaximizeWindow(Window);
}
}
#region Button Events
/// <summary>
/// CloseButton_Clicked
/// </summary>
public static void Close()
{
SystemCommands.CloseWindow(Window);
}
/// <summary>
/// MaximizedButton_Clicked
/// </summary>
public static void Maximize()
{
AdjustWindowSize();
}
/// <summary>
/// Minimized Button_Clicked
/// </summary>
public static void Minimize()
{
SystemCommands.MinimizeWindow(Window);
}
#endregion
Modern UI 和 MahApps.Metro 以某种方式做到了这一点,我简要查看了他们的源代码,但找不到他们是如何做到的。
提前致谢。
【问题讨论】:
标签: c# wpf window customization titlebar