WPF:新手入门教程

前言

近期新学了WPF来开发项目,在此记录开发WPF的基础知识。

环境

当前使用系统:win7
开发工具: VS2015

操作

创建项目

开启VS后:

  1. 点击文件
  2. 选择新建
  3. 点击项目
  4. 找到模板(Visual C#)下选中WPF应用程序
  5. 修改项目项目名(修改"名称"右侧输入框内容,此处默认名为WpfApplication1)
  6. 修改项目路径(修改"位置"右侧输入框内容)
  7. 点击确认,项目创建结束
    Alt在这里插入图片描述

界面组成介绍

新建项目后显示界面如下:
在这里插入图片描述

XAML代码界面

创建项目后,系统自动生成窗口元素其内容为网格元素。
格式:<元素名 属性=“值”>内容</元素名> 或 <元素名 属性=“值”/> 或 <元素名/>在这里插入图片描述

窗口元素

管理、配置、创建、显示用户与独立应用程序交互的窗口,可将控件元素或布局元素添加于<Window 属性=“值”>内容</ Window >的内容位置
WPF Window说明

自动生成属性含义
x:Class对应cs文件中partial关键字继承Window父类的同名类
xmlns默认的命名空间
xmlns:x映射为 x: 前缀的命名空间
xmlns:d映射为 d: 前缀的命名空间
xmlns:mc映射为 mc: 前缀的命名空间
xmlns:local映射为 local: 前缀、含 x:Class 同名类和所有 XAML 文件的代码的命名空间
mc:Ignorable忽略参数前缀中的设计特性 一般为d前缀名
Title运行时窗口显示标题
Height窗口高度
Width窗口宽度
可选填属性含义参数
WindowState窗口状态Maximized(全屏)、Minimized(最小化)、Normal(还原)
WindowStyle边框类型None (不显示标题栏和边框)、SingleBorderWindow(单个边框的窗口)、ThreeDBorderWindow(三维边框)、ToolWindow(固定工具窗口)

WPF Windows概述文档

默认命名空间含义
http://schemas.microsoft.com/winfx/2006/xaml/presentation整个Windows Presentation Foundation (WPF)
http://schemas.microsoft.com/winfx/2006/xaml单独的可扩展应用程序标记语言 (XAML)
http://schemas.microsoft.com/expression/blend/2008设计器支持
http://schemas.openxmlformats.org/markup-compatibility/2006表示并支持读取 XAML 的标记兼容性模式

XAML平台文档开发文档

布局元素

项目自动生成的网格元素Grid是常用布局元素之一。布局元素的内容一般可放置多个控件或嵌套其它布局。

布局元素名解释特点
Grid网格行列摆放子元素,效果类似表格
StackPanel水平或竖直排列子元素,移除一个元素自动前移补齐
Canvas画布坐标放置子元素
DockPanel停靠按上下左右中的区域放置子元素,最后一个子元素默认填充布局剩余空间
WrapPanel自动折行按布局大小自动子元素换行排列
控件元素

控件元素继承了System.Windows.Control类,用于展示用户数据响应用户操作。使用例子如下(图片需添加到相应目录路径,修改属性为始终复制、内容):
控件元素使用样例

常用元素名解释
Button按钮
Image图片

常用于文本显示的控件如下:

元素名称继承于特点
LabelContentControl控件禁用时前景色(文字颜色)变化,内容可以放置任意对象
TextBlockFrameworkElement性能比label更好适合纯文本静态显示
TextBoxFrameworkElement允许编辑文本内容

常见控件属性如下:

属性名解释参数格式
Name或x:Name控件名称同一XAML中命名唯一,区分大小写,不可用符号
Width宽度数字(固定宽度)、数字*(按窗体大小改变的比例进行缩放、Grid中ColumnDefinition 设置列宽)
Height高度数字(固定高度)、数字*(按窗体大小改变的比例进行缩放、Grid中RowDefinition设置行高)

常见控件改变位置、叠放次序的属性如下:

属性名介绍
Margin控件与所处面板四个边界的距离(Margin=“左边距,上边距,右边距,下边距”)
Canvas.Left与所处画布左边界的距离,该属性只在画布内有效
Canvas.Top与所处画布上边界的距离,该属性只在画布内有效
Canvas.Right与所处画布右边界的距离,该属性只在画布内有效,若Left属性有固定数值则Right无效,若Left属性设置Auto则Right生效
Canvas.Bottom与所处画布下边界的距离,该属性只在画布内有效,若Top属性有固定数值则Bottom无效,若Top属性设置Auto则Bottom生效
Panel.ZIndex改变叠放次序(未设置按默认添加顺序),默认为0,数值大者在重叠处可覆盖数值小者显示
快捷操作
  • 跳转XAML对应的CS文件:按F7键或右键-查看代码
  • 代码格式整理: Ctrl+K Ctrl+D
  • 快速定位设计器内控件或布局元素:鼠标光标移到XAML中元素所在行,设计器自动在该元素四周显示方框形状白点

设计器界面

初始为空白,当在XAML中增加控件时,设计器中会出现控件的样式和所在位置。在XAML中使用上述例子,显示如下:
样例xaml的设计器显示

设计器内控件操作

点击控件后,控件四周出现方框形状白点,可点击并拖动白点对控件进行缩放旋转。
鼠标置于四个角之一位置的白点上

  • 鼠标光标变为弯曲的双向箭头时,点击白点不放并移动鼠标可保持原宽高比例旋转控件如左图。
  • 鼠标光标变为笔直的双向箭头时,点击白点不放并移动鼠标可保持原宽高比例缩放控件如右图。
    在这里插入图片描述在这里插入图片描述

鼠标置于四条边中点之一位置的白点上

  • 鼠标光标变为水平或竖直的双向箭头时,点击白点不放并移动鼠标可水平或竖直改变控件的宽或高如左图。当控件为图片时需设置Stretch属性为"Fill"使图片内容也不保持原比例填充宽高。
  • 鼠标光标变为水平或竖直的左三角斜杠右三角时,点击白点不放并移动鼠标可水平或竖直倾斜缩放控件如右图。
    在这里插入图片描述在这里插入图片描述

鼠标置于控件内部任意处时,点击不放并移动鼠标,控件可被拖动改变位置。
拖动不同面板元素内容中的控件:

  • Grid面板中,自动改变Margin属性值对应左、上、右、下边距位置。
    Grid面板下同一单元格内控件元素位置可重叠,按添加在Grid内容的顺序,后添加的在重叠处可覆盖前添加的控件。
    在这里插入图片描述
    控件设置Row行数或Column列数属性后会添加在Grid相应行列单元格区域内(不设置则默认添加在Grid的第0行第0列单元格下)。
    多行多列情况下拖动控件,新位置所在行高或列宽可容纳控件大小则自动改变行数或列数属性,否则会自动生成显示完整控件内容需要的跨行或列属性。
    在这里插入图片描述
  • Canvas面板中,随着鼠标拖动控件自动改变 Canvas.Left和 Canvas.Top属性值对应X、Y轴坐标数值。可重叠,重叠顺序同Grid的同一单元格。在这里插入图片描述
  • StackPanel面板中,单个控件只能按面板布局的Orientation属性水平或竖直面板内移动到同一StackPanel面板下的其他元素的左右或上下。
    竖直StackPanel面板移动例子
设计器工具按钮操作

下图为常用设计器工具按钮解释:
在这里插入图片描述
下图为显示对齐网格和启用对齐线对齐效果。打开网格线对齐时拖动控件移动距离为5或5的倍数
在这里插入图片描述

快捷操作
  • 按钮添加点击事件:双击该按钮,元素属性自动生成Click点击事件属性(属性值为处理事件的函数名称,默认为控件名_Click"),CS文件内出现该事件的空处理函数。
  • 跳转CS对应的XAML文件:按shift+F7键或右键-查看设计器
    在这里插入图片描述在这里插入图片描述

解决资源管理器

本窗口默认为解决资源管理器,可通过点击下侧选项卡切换为.Net Refector Object、团队资源管理器、类视图、属性窗口。
解决资源管理器:显示了包括在本项目(此处为WPFApplication1 项目)中的文件和引用库(dll文件)。若要显示目录下所有文件,点击如图所示的按钮后,未包含文件图标显示为虚线。
在这里插入图片描述

CS文件

XAML中所有添加元素设置属性事件等操作,均可在CS内代码实现。

属性值解释等同CS代码中
Auto按控件大小自动设置数值double.NaN

项目组成介绍

目录 WPF体系结构 .......................................................................................................................................................... 3 WPF应用程序管理 .................................................................................................................................................. 5 一、WPF应用程序由System.Windows.Application 类进行管理 ................................................................. 5 二、创建WPF应用程序 ................................................................................................................................. 5 三、应用程序关闭 ........................................................................................................................................... 6 四、Application 对象的事件 ........................................................................................................................... 7 五、WPF应用程序生存周期 .......................................................................................................................... 9 WPF窗体 ................................................................................................................................................................ 10 一、窗体类 ..................................................................................................................................................... 10 1、XAML文件....................................................................................................................................... 10 2、后台代码文件 ................................................................................................................................... 10 二、窗体的生存周期 ......................................................................................................................................11 1、显示窗体 ............................................................................................................................................11 2、关闭窗体 ........................................................................................................................................... 12 3、窗体的激活 ....................................................................................................................................... 12 4、窗体的生存周期 ............................................................................................................................... 12 三、其他窗体相关的属性、方法、事件 ..................................................................................................... 15 四、定义异形窗体 ......................................................................................................................................... 16 StackPanel、WrapPanel、DockPanel 容器 .......................................................................................................... 19 一、StackPanel ............................................................................................................................................... 19 1、可以使用Orientation 属性更改堆叠的顺序 ................................................................................... 19 2、设置控件的属性,调整控件的显示................................................................................................ 20 二、WrapPanel ................................................................................................................................................ 20 三、DockPanel ................................................................................................................................................ 21 Grid UniformGrid 容器 ........................................................................................................................................ 22 一、Grid .......................................................................................................................................................... 22 二、使用GridSplit分割 ................................................................................................................................ 23 三、UniformGrid ............................................................................................................................................ 25 Canvas、InkCanvas布局 ....................................................................................................................................... 27 一、Canvas ..................................................................................................................................................... 27 二、InkCanvas ................................................................................................................................................ 27 WPF对控件其类型的继承方式如下 .................................................................................................................... 29 WPF控件内容模型 ................................................................................................................................................ 32 一、ContentControl模型 ............................................................................................................................... 35 二、HeaderedContentControl模型 ................................................................................................................ 36 三、ItemsControl模型 ................................................................................................................................... 38 1、使用ItemSource 属性 ....................................................................................................................... 38 2、使用Items属性 ................................................................................................................................ 40 四、HeaderedItemsControl模型 .................................................................................................................... 42 Panel Decorator TextBlock 内容模型 .................................................................................................................. 44 一、Panel内容模型 ....................................................................................................................................... 44 本文来自网络,由大胡子制作.版权归原作者所有.如果你有 wpf 的好资料可以联系我 QQ:249872349,Email:BigBeard@126.com 二、Decorator内容模型 ................................................................................................................................ 45 三、TextBlock 模型 ........................................................................................................................................ 46 四、TextBox 模型 ........................................................................................................................................... 49 依赖项属性和路由事件 ......................................................................................................................................... 50 一、依赖项属性(Dependency Property ....................................................................................................... 50 1、依赖项属性与CLR 包装属性 ......................................................................................................... 50 2、使用由依赖项属性提供的属性功能................................................................................................ 51 3、自定义依赖项属性及重写依赖项属性 ............................................................................................ 52 二、路由事件(RoutedEvent)..................................................................................................................... 53 键盘输入、鼠标输入、焦点处理 ......................................................................................................................... 56 一、键盘类和键盘事件 ................................................................................................................................. 56 二、鼠标类和鼠标事件 ................................................................................................................................. 57 三、焦点处理 ................................................................................................................................................. 60 1、键盘焦点: ....................................................................................................................................... 60 2、逻辑焦点 ........................................................................................................................................... 61 3、键盘导航 ........................................................................................................................................... 61 4、焦点事件 ........................................................................................................................................... 61 WPF命令 ................................................................................................................................................................ 63 一、命令: ..................................................................................................................................................... 64 二、命令源 ..................................................................................................................................................... 65 三、命令目标 ................................................................................................................................................. 66 四、命令绑定 ................................................................................................................................................. 67 WPF资源 ................................................................................................................................................................ 70 一、什么是资源 ............................................................................................................................................. 70 二、资源的定义及XAML中引用 ................................................................................................................ 70 三、XAML解析资源的顺序 ......................................................................................................................... 74 四、静态资源(StaticResource)和动态资源(DynamicResource) ........................................................ 77 五、不同类型的资源 ..................................................................................................................................... 81 1、程序集资源。 ................................................................................................................................... 81 2、对象资源 ........................................................................................................................................... 82
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值