GCT1015
您设置窗口的WindowStyle="None",然后构建自己的窗口界面。您需要构建自己的“最小/最大/关闭/拖动”事件处理程序,但仍会保持“调整大小”。例如:<Window WindowState="Maximized" WindowStyle="None" WindowStartupLocation="CenterScreen" MaxWidth="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Width}" MaxHeight="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Height}"> <DockPanel x:Name="RootWindow"> <DockPanel x:Name="TitleBar" DockPanel.Dock="Top"> <Button x:Name="CloseButton" Content="X" Click="CloseButton_Click" DockPanel.Dock="Right" /> <Button x:Name="MaxButton" Content="Restore" Click="MaximizeButton_Click" DockPanel.Dock="Right" /> <Button x:Name="MinButton" Content="Min" Click="MinimizeButton_Click" DockPanel.Dock="Right" /> <TextBlock HorizontalAlignment="Center">Application Name</TextBlock> </DockPanel> <ContentControl Content="{Binding CurrentPage}" /> </DockPanel></Window>下面是一些常见窗口功能的示例代码/// <summary>/// TitleBar_MouseDown - Drag if single-click, resize if double-click/// </summary>private void TitleBar_MouseDown(object sender, MouseButtonEventArgs e){ if(e.ChangedButton == MouseButton.Left) if (e.ClickCount == 2) { AdjustWindowSize(); } else { Application.Current.MainWindow.DragMove(); } }/// <summary>/// CloseButton_Clicked/// </summary>private void CloseButton_Click(object sender, RoutedEventArgs e){ Application.Current.Shutdown();}/// <summary>/// MaximizedButton_Clicked/// </summary>private void MaximizeButton_Click(object sender, RoutedEventArgs e){ AdjustWindowSize();}/// <summary>/// Minimized Button_Clicked/// </summary>private void MinimizeButton_Click(object sender, RoutedEventArgs e){ this.WindowState = WindowState.Minimized;}/// <summary>/// Adjusts the WindowSize to correct parameters when Maximize button is clicked/// </summary>private void AdjustWindowSize(){ if (this.WindowState == WindowState.Maximized) { this.WindowState = WindowState.Normal; MaximizeButton.Content = "1"; } else { this.WindowState = WindowState.Maximized; MaximizeButton.Content = "2"; }}