WPF 全屏显示实现(无标题栏按钮 + 自定义退出按钮)
WPF 全屏显示实现(无标题栏按钮 + 自定义退出按钮)
完整实现代码
MainWindow.xaml
<Window x:Class="FullScreenApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="全屏应用" WindowState="Maximized" WindowStyle="None"ResizeMode="NoResize" Background="Black"><Grid><!-- 主内容区域 --><TextBlock Text="全屏应用演示" HorizontalAlignment="Center" VerticalAlignment="Center"Foreground="White" FontSize="36"/><!-- 自定义退出按钮 --><Button x:Name="ExitButton" Content="退出程序" Width="100" Height="40"HorizontalAlignment="Right" VerticalAlignment="Bottom"Margin="20"Click="ExitButton_Click"/></Grid>
</Window>
MainWindow.xaml.cs
using System.Windows;namespace FullScreenApp
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();// 确保窗口全屏this.WindowState = WindowState.Maximized;this.WindowStyle = WindowStyle.None;// 可选:防止其他窗口覆盖this.Topmost = true;}private void ExitButton_Click(object sender, RoutedEventArgs e){// 退出应用程序Application.Current.Shutdown();}// 可选:响应ESC键退出protected override void OnKeyDown(KeyEventArgs e){if (e.Key == Key.Escape){Application.Current.Shutdown();}base.OnKeyDown(e);}}
}
进阶功能
1. 添加淡入淡出动画效果
<Window.Resources><Storyboard x:Key="FadeOut"><DoubleAnimation Storyboard.TargetProperty="Opacity"From="1" To="0" Duration="0:0:0.3"/></Storyboard>
</Window.Resources>
然后在退出按钮点击事件中:
private async void ExitButton_Click(object sender, RoutedEventArgs e)
{var storyboard = (Storyboard)FindResource("FadeOut");storyboard.Begin(this);await Task.Delay(300); // 等待动画完成Application.Current.Shutdown();
}
2. 防止误操作退出(添加确认对话框)
private void ExitButton_Click(object sender, RoutedEventArgs e)
{var result = MessageBox.Show("确定要退出程序吗?", "确认退出", MessageBoxButton.YesNo, MessageBoxImage.Question);if (result == MessageBoxResult.Yes){Application.Current.Shutdown();}
}
3. 多显示器支持(在主显示器全屏)
public MainWindow()
{InitializeComponent();// 获取主显示器信息var screen = System.Windows.Forms.Screen.PrimaryScreen;// 设置窗口位置和大小this.Left = screen.Bounds.Left;this.Top = screen.Bounds.Top;this.Width = screen.Bounds.Width;this.Height = screen.Bounds.Height;this.WindowStyle = WindowStyle.None;this.WindowState = WindowState.Normal; // 必须设置为Normal才能自定义大小
}
注意事项
- 窗口样式:
WindowStyle="None"
会移除所有窗口装饰,包括标题栏和边框 - 调整大小:
ResizeMode="NoResize"
防止用户调整窗口大小 - 任务栏:全屏窗口默认会覆盖任务栏,如需显示任务栏,请调整窗口大小
- 快捷键:添加ESC键退出功能可以提升用户体验
- 性能:全屏应用通常需要优化渲染性能,特别是包含动画或视频时