WPF 中的window 窗体

本文详细介绍了WPF中的Window窗体,包括窗体的外观设置如Icon、Title、WindowStyle和ResizeMode,位置设定如WindowStartupLocation,大小调整如Width、Height与SizeToContent,以及可见性和状态管理如Visibility和WindowState。同时,还涵盖了窗体的生命周期事件,如Initialized、Loaded和Closed等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------ Window(窗体不能嵌套窗体)、UserControl(用户控件,布局的时候像窗体那样布局就可以了)、Page把窗体以网页形式展现。而一个XAML页面里只能有一个顶级元素。而顶级元素里面只能有一个子元素。因此要有布局控件。
  Window窗体属性:

1、窗体的外观(WPF中默认窗体框架的外观,主要取决于Icon、Title、WindowStlye、 ResizeMode等属性)
---- Icon :指定窗体的图标;
---- Title : 指定窗体的标题;
---- WindowStyle 指定窗体的样式,有4个取值:
(1)None :无边框; (当ResizeMode属性NoResize 时,仅剩下窗口核心)
(2)SingleBorderWindow,单边框【默认】
(3)ThreeDBorderWindow,3D边框
(4)ToolWindow, 工具箱窗口
---- ResizeMode是指定大小调节样式 :有4个取值:
(1)NoResize, 不可调节,同时没有最大最小按钮;
(2)CanResize, 不可调节。但可以最小化;(此时最大按钮不可用)
(3)CanResize, 可调节【默认】
(4)CanResizeWithGrip, 可根据网格调节 (窗口右下脚显示可调节网格)

### 创建自定义WPF窗口样式 为了创建具有独特外观的WPF窗口,可以利用XAML的强大功能来设计界面并应用样式。下面是一个简单的例子展示如何实现这一目标。 #### 定义基本结构 首先,在`App.xaml`文件中设置应用程序的主题风格: ```xml <Application.Resources> <!-- Define application-wide styles here --> </Application.Resources> ``` 接着,创建一个新的`Window`类继承自`System.Windows.Window`,用于构建自定义窗口逻辑[^1]。 #### 设计窗口布局 在对应的`.xaml`文件里编如下代码片段,这会移除默认标题栏,并允许通过拖拽整个客户区移动窗口位置: ```xml <Window x:Class="CustomWindowExample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="" WindowStyle="None" AllowsTransparency="True" Background="#FFDDEEFF"> <Border CornerRadius="8" BorderBrush="Gray" BorderThickness="1" Padding="5"> <DockPanel LastChildFill="True"> <!-- Add a header that allows dragging the window --> <StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Height="30" VerticalAlignment="Center" MouseLeftButtonDown="TitleBar_MouseLeftButtonDown"> <Image Source="/Images/icon.png" Width="16"/> <TextBlock Text="My Custom Window" Margin="5,0,0,0" FontSize="14" VerticalAlignment="Center"/> <!-- Close button --> <Button Content="✕" Click="CloseButton_Click" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Width="30" /> </StackPanel> <!-- Main content area goes here --> <ContentPresenter/> </DockPanel> </Border> </Window> ``` 上述代码实现了无边框、可透明度调节的基础框架;顶部包含了一个模拟的标准标题条,其中加入了关闭按钮以及支持鼠标左键按下事件触发窗口拖动的功能[^2]。 #### 添加交互行为 对于C#部分,则需处理一些必要的操作如响应点击关闭按钮的动作或是使窗口能够被拖曳: ```csharp private void CloseButton_Click(object sender, RoutedEventArgs e) { this.Close(); } private void TitleBar_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Left && e.ClickCount == 1) { DragMove(); // Move the window with mouse drag. } } ``` 此段程序确保了当用户单击左侧鼠标的次数等于一次时,可以通过按住并拖动的方式调整窗口的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值