窗体控件 <Window>的常用属性 和 <WindowChrome>自定义窗体样式的基础用法

窗体控件 <Window>

属性名称说明
Title设置窗口的标题栏文本
Width / Height设置窗口的宽度和高度
MinWidth / MinHeight设置窗口的最小宽度和最小高度
MaxWidth / MaxHeight设置窗口的最大宽度和最大高度
WindowStartupLocation窗口启动时的位置(常见值:CenterScreenManual
WindowState窗口的状态(最大化、最小化、普通)
ResizeMode窗口是否可调整大小(CanResizeNoResizeCanResizeWithGrip
Icon设置窗口的图标
ShowInTaskbar设置窗口是否显示在任务栏
Topmost设置窗口是否总在最上面
AllowsTransparency是否允许窗口透明
Background设置窗口的背景色
Closing窗口关闭事件(Closing 事件)
Activated窗口被激活时触发的事件(Activated 事件)
SizeToContent窗口是否自动调整大小以适应内容


1. Title(窗口标题)

这是窗口顶部显示的标题,默认是空的。你可以这样设置:

<Window Title="我的窗口">
    <!-- 窗口内容 -->
</Window>

或者在 C# 代码中设置:

this.Title = "我的窗口";


2. Width / Height(窗口宽度和高度)

设置窗口的初始宽高,可以通过属性或直接设置 XAML 中的值:

<Window Width="800" Height="600">
    <!-- 窗口内容 -->
</Window>

或者通过代码:

this.Width = 800;
this.Height = 600;


3. MinWidth / MinHeight(最小宽高)

设置窗口最小的宽度和高度,防止窗口被调整得太小:

<Window MinWidth="400" MinHeight="300">
    <!-- 窗口内容 -->
</Window>


4. MaxWidth / MaxHeight(最大宽高)

设置窗口的最大宽度和最大高度:

<Window MaxWidth="1024" MaxHeight="768">
    <!-- 窗口内容 -->
</Window>


5. WindowStartupLocation(启动位置)

控制窗口启动时的位置。常见值有:

  • CenterScreen:窗口居中显示
  • Manual:手动设置位置
  • CenterOwner:如果窗口有父窗口,窗口在父窗口中居中
<Window WindowStartupLocation="CenterScreen">
    <!-- 窗口内容 -->
</Window>

在代码中设置:

this.WindowStartupLocation = WindowStartupLocation.CenterScreen;


6. WindowState(窗口状态)

控制窗口的状态:最大化、最小化或普通状态。常用的值有:

  • WindowState.Normal:正常大小
  • WindowState.Minimized:最小化
  • WindowState.Maximized:最大化
<Window WindowState="Maximized">
    <!-- 窗口内容 -->
</Window>

或者在代码中设置:

this.WindowState = WindowState.Maximized;


7. ResizeMode(窗口大小调整)

控制窗口是否可以调整大小。常见的值有:

  • CanResize:允许调整大小(默认值)
  • NoResize:不允许调整大小
  • CanResizeWithGrip:允许调整大小并带有调整把手
<Window ResizeMode="NoResize">
    <!-- 窗口内容 -->
</Window>


8. Icon(窗口图标)

设置窗口的图标,通常放在 Window 的左上角。你可以放一个 .ico 文件:

<Window Icon="Images/myicon.ico">
    <!-- 窗口内容 -->
</Window>

或者在代码中设置:

this.Icon = new BitmapImage(new Uri("Images/myicon.ico", UriKind.Relative));


9. ShowInTaskbar(显示在任务栏)

如果你不想让窗口显示在任务栏上,可以设置为 false

<Window ShowInTaskbar="False">
    <!-- 窗口内容 -->
</Window>


10. Topmost(窗口始终位于最上层)

如果你希望窗口始终位于其他所有窗口的上方(比如工具窗口),可以设置 Topmosttrue

<Window Topmost="True">
    <!-- 窗口内容 -->
</Window>

或者在代码中设置:

this.Topmost = true;


11. AllowsTransparency(允许透明)

设置窗口是否允许透明,如果要创建透明或半透明的窗口,可以将此属性设置为 true

<Window AllowsTransparency="True" Background="Transparent">
    <!-- 窗口内容 -->
</Window>


12. Background(窗口背景)

设置窗口的背景色,可以是颜色、渐变、图片等:

<Window Background="LightBlue">
    <!-- 窗口内容 -->
</Window>


13. Closing(关闭事件)

当用户关闭窗口时,你可以捕获这个事件,做一些清理工作或阻止关闭:

<Window Closing="Window_Closing">
    <!-- 窗口内容 -->
</Window>
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    // 执行清理操作
    // 可以通过 e.Cancel = true 来取消关闭
}


14. Activated(窗口激活事件)

当窗口被激活时触发的事件,可以用来做一些初始化或状态更新操作:

<Window Activated="Window_Activated">
    <!-- 窗口内容 -->
</Window>
private void Window_Activated(object sender, EventArgs e)
{
    // 执行窗口激活后的操作
}


15. SizeToContent(根据内容调整大小)

如果你希望窗口的大小自适应它的内容,可以设置 SizeToContent

<Window SizeToContent="WidthAndHeight">
    <!-- 窗口内容 -->
</Window>

可以选择的值:

  • Manual:窗口大小由开发者控制
  • Width:宽度自动调整
  • Height:高度自动调整
  • WidthAndHeight:宽度和高度都自动调



<WindowChrome> 标签

在 WPF 里,WindowChrome 是一个特殊的类,用来自定义窗口的边框、标题栏、系统按钮(最小化、最大化、关闭)。
简单说,就是用来"自己画"窗口外观,让你的 WPF 窗口不是死板的系统样式,而是能自由设计的炫酷界面

使用前要:WindowStyle="None" ➔ 去掉系统自带边框(必须的,不然WindowChrome不起作用)

常用属性:

属性名类型说明
CaptionHeightdouble标题栏区域高度(可以点住拖动窗口)。
CornerRadiusCornerRadius窗口四角圆角半径。
GlassFrameThicknessThickness毛玻璃区域范围(不常用)。
NonClientFrameEdgesNonClientFrameEdges自定义哪些系统边框元素。
ResizeBorderThicknessThickness窗口可缩放边缘厚度。
UseAeroCaptionButtonsbool是否使用系统默认的最小化/最大化/关闭按钮。

例子:

<!--需要 xmlns:shell="clr-namespace:System.Windows.Shell;assembly=PresentationFramework"命名空间-->
<Window x:Class="YourApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:shell="clr-namespace:System.Windows.Shell;assembly=PresentationFramework"
        Title="自定义窗口" Height="450" Width="800"
        WindowStyle="None" AllowsTransparency="False">
       
    <Window.Chrome>
        <shell:WindowChrome
            CaptionHeight="30"
            CornerRadius="8"
            ResizeBorderThickness="5"
            GlassFrameThickness="0"
            />
    </Window.Chrome>

    <Grid Background="LightGray">
        <TextBlock Text="这是自定义窗口" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="24"/>
    </Grid>
</Window>

<!--
解释一下里面的设置:
WindowStyle="None" ➔ 去掉系统自带边框(必须的,不然WindowChrome不起作用)。
AllowsTransparency="False" ➔ 保证窗口还可以被硬件加速(如果是毛玻璃效果,可能设True)。
CaptionHeight="30" ➔ 上面 30 像素区域是可以「拖动窗口」的。
CornerRadius="8" ➔ 窗口四角有 8 的圆角。
ResizeBorderThickness="5" ➔ 边框5像素区域可以拖动缩放。
shell 命名空间
-->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值