窗体

无边框

我们创建的应用程序如下图所示,创建出来的应用程序会有边框,上方会有关闭、最大化和最小化按钮,一般来说Windows默认的这个太丑了,所以我们需要将边框都隐藏掉,我们自己画漂亮的页面。
image

  • WindowStartupLocation: 窗口初始化显示位置
    • Manual:手动指定,根据Left和top属性来设置窗口要展示到什么位置。
    • CenterScreen: 屏幕居中
    • CenterOwner: 父窗口居中
  • WindowStyle: 窗口样式
    • None: 无边框
    • ToolWindow: 只有关闭按钮且关闭按钮样式比较原有样式小
    • SingleBorderWindow: 默认值,有关闭、最大化和最小化按钮。
    • ThreeDBorderWindow: 三维边框窗口,似乎与SingleBorderWindow没太大差别。
      ToolWindow样式如下所示:
      image
      None样式如下图所示,None只是移除了标题栏和控制按钮,但不会完全移除系统级别的窗口边框,WPF仍然会保留一个最小的边框来维持窗口的完整性,所以在上方会有一条线,需要配合AllowsTransparency参数来将小边框取消:
      image
      SingleBorderWindow样式如下图所示:
      image
      ThreeDBorderWindow如下图所示:
      image

还可以设置无边框+背景颜色+开启透明度可以来使窗口透明化,如下所示

  • Background: 背景颜色
  • AllowsTransparency: 开启窗口透明
  • WindowStyle: 窗口样式
    设置之后可以看到窗体的背景色已经变成了透明色,只剩一个按钮在中间
    image

可以设置窗体默认状态,设置后加载窗口时会自动设置窗口是最大化还是最小化的状态的
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>

当我们启动引用时发现窗口有阴影也可以正常拖动了
image
默认颜色是白色的,会将功能区遮盖住,但是点击以下区域可以正常放大、关闭、最小化
image
参数:

  • CaptionHeight: 标题栏高度
  • UseAeroCaptionButtons
posted @ 2025-09-02 13:38  RainbowMagic  阅读(12)  评论(0)    收藏  举报