WPF-1.基础编程
文章大纲:
思维导图
控件
定义
就是程序代码和GUI预先打包在一起,可供重复使用,然后创建出复杂的应用程序。控件可以定义自身默认的绘制形式以及一系列的标准行为。
放置方式
有三个视图,三个视图的更改都会影响到布局并且反映到其他布局,这三个都有各自的优势。
视图布局即时显示的视图适合旋转和调整对齐方式,
XAML适合对已有的属性更改值,例如改个name就不用在左侧里面找很久
左侧属性视图: 适合添加新的属性和事件等,不过对于熟悉的话,直接在xaml里面添加可能省去找的时间了。
类型
控件类型有内容控件和项控件两种。
内容控件
有一个Content属性可以放置其他的控件,但是只能放置一个控件
项控件
可以在其中插入很多给控件,例如Grid控件。往往是不显示的控件,用来帮助设置布局的GUI控件,
属性
控件属性
控件名
对应的是x:Name属性,控件的名称在名称空间范围内是唯一的。
Margin属性
如果在即时显示视图中拖拽控件会改变的是这个属性。
HorizontalAlignment/VerticalAlignment属性
设置这两个属性,该控件的四周留白将相对于左上角的位置而定,并且一直在放置的网格位置中,如果没设置这两个属性,控件会保持在中间的位置,而且会随着窗体大小变化控件的大小。
依赖属性
介绍:
普通的控件属性是使用设置器和获取器,如果需要根据属性的变化做出动态改变的用户界面就需要多次重复多次执行get和set中的方法。这是普通属性的缺点,所以引入新的依赖属性。这也是WPF不同于Windows标准窗体程序的地方之一。
依赖属性是能够注册到WPF属性系统中的属性,然后获得更多的功能。
功能:
- 通过样式来改变依赖属性的值
- 可以通过资源或数据绑定来设置依赖属性的值
- 在动画中更改依赖属性的值
(以上三种是通过前端样式来修改值) - 可以设置某个父类元素中依赖属性的值,然后将这个值也作为子元素中同一个依赖属性的值
- 可配置一系列相关属性,其中一个属性的更改后会自动更新其他属性。这种功能称为强制
(以上是属性之间的联动更改值) - 可通过明确定义的代码模式,来配置属性值更改通知
- 可对依赖属性应用元数据,指定其他行为特征。例如可以指定给定的属性值发生变化后,自动调整用户界面
附加属性
介绍:
在类里面定义附加属性,然后类实例的每个子对象都能使用这个属性。例如在Grid这个类中定义了Column和Row两个附加属性,然后在Gird控件中的子控件如<Button>就可以进行排序来指定自己在<Grid>中的位置了。
功能:
在控件布局中大量使用了附加属性,使子空间可以定义自己在容器的哪一侧。例如一个家庭,长辈已经把东西都按顺序安排好,然后晚辈再根据自己的需要去领号还决定位置。
事件
定义:
大都数涉及的都是些通用事件,包括鼠标和键盘所引发的事件变化。是一个触发和响应的处理方式。
处理事件
添加方式:
事件列表
首先选定一个具体的控件然后在其控件的属性列表中的,有“事件”栏目。在这里选定特定的事件,然后输入事件名,按回车会进。
在XAML中输入事件名
直接在xaml中输入事件名,相应的处理程序名称添加到里面。
路由事件
介绍
标准的.Net事件会被显示订阅该事件的代码处理,且只会发送到订阅者。
路由会将事件发送到包含这个控件的所有控件。
形式
当路由事件发生的时候,会向发生该事件的控件
路由命令
介绍
路由命令和路由事件都是引起一些代码的执行。事件只能直接与XAML中的单个元素和代码中的一个处理程序绑定。
事件和命令的区别是,命令就是相同操作的逻辑代码,例如在程序中的保存经常有菜单栏选择也可以在工具栏保存。这时候使用路由命令就只要写一次就好了。