我为我的应用程序创建了一个自定义窗口,如果用户单击我的自定义最大化按钮,我会编写一些代码:
private void MaxThis(object sender, System.Windows.RoutedEventArgs e)
{ if (WindowState == WindowState.Maximized){
WindowState = WindowState.Normal;}
else {
this.Top = 0;
this.Left = 0;
this.MaxWidth = System.Windows.SystemParameters.WorkArea.Width;
this.MaxHeight = System.Windows.SystemParameters.WorkArea.Height;
this.WindowState = WindowState.Maximized;
}
}
恢复到正常状态可以正常工作。但是,当我想要最大化时,它会在屏幕的右侧和底部以最小的边距最大化窗口。单击最大化再次以某种方式修复此问题。如何解决这个问题,以便在第一次点击时最大化......?
答案 0 :(得分:2)
删除您在XAML中为窗口设置的高度和宽度属性
答案 1 :(得分:0)
尝试使用
this.WindowState = WindowState.Maximized;
也许是代码,在搞乱Windows API操作之前就已经开始了。
抱歉,我的错误。 然后,您应该使用Windows API来引发Maximize事件。 试试这段代码:
[DllImport("user32.dll")]
public static extern int SendMessage(
int hWnd, // handle to destination window
uint Msg, // message
long wParam, // first message parameter
long lParam // second message parameter
);
public const int WM_SIZE = 0x0005;
public const int SIZE_MAXIMIZED = 2;
在点击事件中:
SendMessage(this.Handle, WM_SIZE, SIZE_MAXIMIZED, 0);