窗体
无边框
我们创建的应用程序如下图所示,创建出来的应用程序会有边框,上方会有关闭、最大化和最小化按钮,一般来说Windows默认的这个太丑了,所以我们需要将边框都隐藏掉,我们自己画漂亮的页面。
- WindowStartupLocation: 窗口初始化显示位置
- Manual:手动指定,根据Left和top属性来设置窗口要展示到什么位置。
- CenterScreen: 屏幕居中
- CenterOwner: 父窗口居中
- WindowStyle: 窗口样式
- None: 无边框
- ToolWindow: 只有关闭按钮且关闭按钮样式比较原有样式小
- SingleBorderWindow: 默认值,有关闭、最大化和最小化按钮。
- ThreeDBorderWindow: 三维边框窗口,似乎与SingleBorderWindow没太大差别。
ToolWindow样式如下所示:
None样式如下图所示,None只是移除了标题栏和控制按钮,但不会完全移除系统级别的窗口边框,WPF仍然会保留一个最小的边框来维持窗口的完整性,所以在上方会有一条线,需要配合AllowsTransparency参数来将小边框取消:
SingleBorderWindow样式如下图所示:
ThreeDBorderWindow如下图所示:
还可以设置无边框+背景颜色+开启透明度可以来使窗口透明化,如下所示
- Background: 背景颜色
- AllowsTransparency: 开启窗口透明
- WindowStyle: 窗口样式
设置之后可以看到窗体的背景色已经变成了透明色,只剩一个按钮在中间
可以设置窗体默认状态,设置后加载窗口时会自动设置窗口是最大化还是最小化的状态的
WindowState: 窗体状态
- Minimized:最小化
- Maximized: 最大化
- Normal: 正常
异形窗体
当窗口设置成无边框时就会出现窗口无法拖动、窗口阴影消失已经窗口大小无法拖动的问题。
将之前的无边框的配置和窗口透明的配置删除后并添加以下配置
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="400" Width="600"
>
<WindowChrome.WindowChrome>
<WindowChrome />
</WindowChrome.WindowChrome>
<Grid>
</Grid>
</Window>
当我们启动引用时发现窗口有阴影也可以正常拖动了
默认颜色是白色的,会将功能区遮盖住,但是点击以下区域可以正常放大、关闭、最小化
参数:
- CaptionHeight: 标题栏高度
- UseAeroCaptionButtons
虽然道路是曲折的,但前途是光明的。