文章介绍:
大家好,我是行不更名,坐不改姓的宋晓刚,WPF是一种基于.NET Framework的图形界面框架,用于开发Windows应用程序。它提供了丰富的界面控件和布局系统,让开发者能够快速构建美观、高效的桌面应用程序。在本文中,我们将从基础概念开始,逐步深入学习WPF,帮助您掌握这个强大的开发工具。
微信:15319589104
QQ: 2981345658
WPF(Windows Presentation Foundation)是微软.NET框架的一部分,它为开发人员提供了一套丰富的图形、用户界面和多媒体处理功能。在C#中,WPF可用于创建传统的桌面应用程序,这些应用程序具有丰富的视觉效果和用户交互。
1.C#语言俩大框架:WPF与Winform
2.异/同点
输出结果:客户端应用(人机交互)
3.应用场景
主要是上位机(工业现场),2D,3D
一般的应用程序:多硬件交互比较多的应用,推荐使用桌面应用
窗体(Window)是一种容器控件,用于创建可视化的用户界面,窗体可以包含其他控件。
Title(标题):这是窗体的标题栏显示的文本。可以通过设置窗体的Title属性来指定标题文本。例如:
<Window Title="My Window" />
Width和Height(宽度和高度):这些属性用于设置窗体的宽度和高度。可以直接设置固定的像素值,也可以使用*调整为自适应大小。例如:
<Window Width="400" Height="300" />
WindowStartupLocation(窗体启动位置):这个属性用于控制窗体的启动位置。可以指定为屏幕中心(CenterScreen)、手动设置(Manual)或者根据父窗体自动调整(CenterOwner)。例如:
<Window WindowStartupLocation="CenterScreen" />
ResizeMode(调整大小模式):这是一个枚举属性,用于控制窗体的调整大小模式。可以选择不可调整大小(NoResize)、只能调整宽度(CanResizeWithGrip)或者完全可调整(CanResize)。例如:
<Window ResizeMode="CanResizeWithGrip" />
WindowStyle(窗体样式):这个属性用于指定窗体的样式,例如标准窗体(SingleBorderWindow)、无边框窗体(None)或者三维边框窗体(ThreeDBorderWindow)。例如:
<Window WindowStyle="SingleBorderWindow" />
Background(背景):这个属性用于设置窗体的背景颜色。可以指定一个颜色值,或者使用渐变(GradientBrush)或者图像(ImageBrush)作为背景。例如:
<Window Background="LightGray" />
Topmost(最顶层):这个属性用于将窗体置顶显示。设置为True时,窗体将显示在其他窗体之上。例如:
<Window Topmost="True" />
ShowInTaskbar(在任务栏显示):这个属性用于控制窗体是否在任务栏中显示。设置为False时,窗体将不会显示在任务栏中。例如:
<Window ShowInTaskbar="False" />
以上是WPF中常用的一些窗体设置属性,通过这些属性的设置,可以调整窗体的外观,行为和交互方式,以满足特定的需求。
常用的布局控件,使用以及常用的场景
功能最强大,布局最灵活的容器,讲区域划分不同大小网格
<Grid>
<!-- 在此处添加其他控件 -->
</Grid>
添加行和列定义:
Grid通过行和列定义来确定控件的位置和大小。您可以使用Grid.RowDefinitions和Grid.ColumnDefinitions属性添加行和列定义。
a. 行定义:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <!-- 自动适应内容的行 -->
<RowDefinition Height="*" /> <!-- 占据剩余空间的行 -->
</Grid.RowDefinitions>
<!-- 在此处添加其他控件 -->
</Grid>
b. 列定义:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" /> <!-- 自动适应内容的列 -->
<ColumnDefinition Width="*" /> <!-- 占据剩余空间的列 -->
</Grid.ColumnDefinitions>
<!-- 在此处添加其他控件 -->
</Grid>
将控件添加到Grid中:
使用Grid.Row和Grid.Column属性将控件放置在Grid的对应行和列中。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!-- 在第一行第一列添加一个按钮 -->
<Button Content="按钮" Grid.Row="0" Grid.Column="0" />
<!-- 在第二行第二列添加一个标签 -->
<Label Content="标签" Grid.Row="1" Grid.Column="1" />
</Grid>
常用的Grid属性:
Grid控件提供了许多属性来定义控件的位置、大小和对齐方式。以下是几个常用的属性:
Grid.RowSpan和Grid.ColumnSpan:用于指定控件跨越的行数和列数。
Grid.RowDefinitions和Grid.ColumnDefinitions:用于定义Grid的行和列的高度和宽度。
Grid.Row和Grid.Column:用于指定控件所在的行和列。
HorizontalAlignment和VerticalAlignment:用于指定控件在单元格中的水平对齐方式和垂直对齐方式。
Margin:用于设置控件和网格单元格之间的空白区域。
Grid.IsSharedSizeScope:用于指定是否共享相同大小的列或行。
以上属性,可以有效的控制控件在Grid布局中的位置,大小和对齐方式。
StackPanel 是 WPF 中常用的布局面板之一,它允许您按照水平或垂直方向堆叠多个子元素。
1.添加 StackPanel 控件:
<StackPanel>
<!-- 在此处添加其他控件 -->
</StackPanel>
2.堆叠方向:
StackPanel 提供了 Orientation 属性来指定子元素的布局方向。默认值为 Vertical,表示子元素在垂直方向上堆叠;设置为 Horizontal,表示子元素在水平方向上堆叠。
<StackPanel Orientation="Vertical">
<!-- 在此处添加垂直方向上堆叠的子元素 -->
</StackPanel>s
<StackPanel Orientation="Horizontal">
<!-- 在此处添加水平方向上堆叠的子元素 -->
</StackPanel>
3.添加子元素:
将控件添加到 StackPanel 中,它们将按照堆叠方向从上到下(或左到右)依次排列。
<StackPanel>
<Button Content="按钮1" />
<Button Content="按钮2" />
<Button Content="按钮3" />
</StackPanel>
4.常用的属性和注意事项:
虽然 StackPanel 是一个简单的布局控件,但它提供了一些常用的属性,可以帮助您控制子元素的布局。
HorizontalAlignment 和 VerticalAlignment:这些属性用于指定子元素在 StackPanel 中的水平和垂直对齐方式。
Margin:用于设置子元素与 StackPanel 边框之间的空白区域。
Orientation:用于设置 StackPanel 的堆叠方向。
控制子元素的大小:由于 StackPanel 只提供堆叠功能,控制子元素的大小可能需要使用其他布局控件(如 Grid 或 DockPanel)进行更精确的操作。
注意:由于 StackPanel 按照堆叠顺序布局子元素,它们将按照列表方式依次显示。这可能会导致子元素在界面拉伸或缩放时出现不理想的效果。因此,在某些情况下,您可能需要使用其他布局控件来实现更复杂的布局。
DockPanel 是 WPF 中常用的布局面板之一,它允许您将子元素依靠 “停靠” (dock)的方式排列在容器内。
1.添加 DockPanel 控件:
<DockPanel>
<!-- 在此处添加其他控件 -->
</DockPanel>
2.停靠子元素:
DockPanel 提供了 LastChildFill 属性来控制最后一个子元素的填充方式。如果 LastChildFill 设置为 true(默认值),则最后一个子元素将占据 DockPanel 中剩余的空间。如果设置为 false,则最后一个子元素将仅占据其本身所需的空间。
要将子元素停靠在 DockPanel 中,可以使用 DockPanel.Dock 属性。将子元素的 DockPanel.Dock 设置为 Left、Top、Right 或 Bottom,即可将其停靠在 DockPanel 的相应边缘。
<DockPanel>
<Button Content="按钮1" DockPanel.Dock="Left" />
<Button Content="按钮2" DockPanel.Dock="Top" />
<Button Content="按钮3" DockPanel.Dock="Right" />
<Button