窗体控件 <Window>
属性名称 | 说明 |
---|---|
Title | 设置窗口的标题栏文本 |
Width / Height | 设置窗口的宽度和高度 |
MinWidth / MinHeight | 设置窗口的最小宽度和最小高度 |
MaxWidth / MaxHeight | 设置窗口的最大宽度和最大高度 |
WindowStartupLocation | 窗口启动时的位置(常见值:CenterScreen 、Manual ) |
WindowState | 窗口的状态(最大化、最小化、普通) |
ResizeMode | 窗口是否可调整大小(CanResize 、NoResize 、CanResizeWithGrip ) |
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
(窗口始终位于最上层)
如果你希望窗口始终位于其他所有窗口的上方(比如工具窗口),可以设置 Topmost
为 true
:
<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不起作用)
常用属性:
属性名 | 类型 | 说明 |
---|---|---|
CaptionHeight | double | 标题栏区域高度(可以点住拖动窗口)。 |
CornerRadius | CornerRadius | 窗口四角圆角半径。 |
GlassFrameThickness | Thickness | 毛玻璃区域范围(不常用)。 |
NonClientFrameEdges | NonClientFrameEdges | 自定义哪些系统边框元素。 |
ResizeBorderThickness | Thickness | 窗口可缩放边缘厚度。 |
UseAeroCaptionButtons | bool | 是否使用系统默认的最小化/最大化/关闭按钮。 |
例子:
<!--需要 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 命名空间
-->