【备忘】WPF基础
2016-06-08 17:36
204 查看
XAML
为了避免生成用户界面(GUI)的代码和基于用户操作执行的代码混合在一起。名称空间
值得注意的名称空间:xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
前者是 WPF 的默认名称空间,声明了许多空间。
后者用于声明 XAML 语言本身,指定的语言元素必须表明 x 前缀。
系统名称空间:
xmlns:sys="clr-namespace:System;assembly=mscorlicb"
该名称空间允许直接使用 .NET Framework 内置类型。例如可以声明一个数组,成员是字符串类型。
尽管 XAML 是一种强大的用户界面声明方式,但他并不是一门编程语言。
虽然可以在 XAML 中直接嵌入C# 代码,但任何时候都不建议将代码和标记混合在一起。
代码隐藏文件
它们就是普通C#文件,只不过其名称与XAML 文件相同,再加上 .cs 拓展名。(也可以任意命名)
XAML 文件中会自动添加属性
x:Class="Test.MainWindow"
控件
所谓控件,就是将程序代码和GUI预先打包到一起,可供重复利用。属性
所有属性 都可以通过属性(Properties)面板来设置。依赖属性
附加属性
附加属性(Attached Property)是一种在定义该属性的类实例的每个子对象上都可用的属性。比如
Grid的
Column
Row定义列和行,子控件方便排序。
通用控件事件
事件 | 说明 |
---|---|
Click | 在单击控件时引发。在某些情况下,这个事件也会在用户按下回车键时引发 |
DoubleClick | 在双击控件件时引发。处理某些控件上的 Click 事件,如 Button 控件,表示永远不会调用 DoubleClick 事件 |
DragDrop | 在完成拖放操作时引发。换言之,当一个对象被拖到控件上,然后用户释放鼠标按钮后,引发该事件 |
DragEnter | 在被拖动的对象进入控件的边界时引发 |
DragLeave | 在被拖动的对象移出控件的边界时引发 |
DragOver | 在被拖动的对象放在控件上时引发 |
KeyDown | 当控件有焦点时,按下一个键时引发该事件,这个事件总是在KeyPress 和KeyUp 之前引发 |
KeyPress | 当控件有焦点时,按下一个键时发生该事件,这个事件总是在KeyDown 之后、KeyUp 之前引发。KeyDown 和KeyPress 的区别是 KeyDown 传送被按下的键的键盘码,而 KeyPress 传送被按下的键的char 值 |
KeyUp | 当控件有焦点时,释放一个键时发生该事件,这个事件总是在KeyDown 和KeyPress 之后引发 |
GotFocus | 在控件接手焦点时引发。不要用这个事件执行控件的有效性验证,而应使用 Validating 和Validated |
LostFocus | 在控件失去焦点时引发。不要用这个事件执行控件的有效性验证,而应使用 Validating 和Validated |
MouseDown | 在鼠标指针指向一个控件,且鼠标按钮被按下时引发,这与 Click 事件不同,因为在按钮被按下之后,且未被释放之前引发MouseDownMouseMove 在鼠标滑过控件时引发 |
MouseUp | 在鼠标指针位于控件上,且鼠标按钮被释放时引发 |
Paint | 绘制控件时引发 |
Validated | 当控件的CausesValidation 属性设置为true, 且该控件获得焦点时, 引发该事件。 它在Validating事件之后发生,表示验证已经完成 |
Validating | 当控件的CausesValidation 属性设置为true,且该控件获得焦点时,引发该事件。注意,被验证的控件是正在失去焦点的控件,而不是正在获得焦点的控件 |
路由事件
WPF 中存在一种路由事件(routed event)。标准的.NET事件会被显示订阅该事件的代码处理,并且事件只能被发送到这些订阅者哪里,路由事件的不同之处在于,可将是ijanfasong到包含该控件所在层次的所有空间。路由命令
控件类型
分为类容空间和项控件两大类。类容空间(如 BUTTON)只有一个 Content 属性,可将这个属性设置为其他任意的控件。
项控件(如 GRID),可以插入多个控件作为其内容。
布局控件
所有内容布局控件都继承自抽象的 Panel 类。TextBox
CheckBox
RaidoButton
ComboBox
ListBox
相关文章推荐
- 八个不得不知的重要法则 让你更懂互联网
- Mac OS下terminal的快捷键
- 8天学通MongoDB
- Java中出现No enclosing instance of type XXX is accessible问题
- @NotEmpty、@NotBlank、@NotNull
- 数据溢出怎么办,别慌别慌,try_catch来帮忙
- Android四大组件
- Hadoop默认端口说明
- spring中MessageSource的配置使用方法--ResourceBundleMessageSource
- java关键字Transient
- 安装caffe
- BearSkill之UIView挖空处理
- android ROM设置默认Launcher(主屏幕应用)
- C与C++函数声明时的几个小的语法差异
- CSS 换行知多少: word-wrap && word-break && white-space && word-spacing
- cxgrid属性说明,每次用的时候费时费力查找。
- JavaScript高级程序设计 第六章 面向对象程序设计
- [NYIST16]矩形嵌套(DP,最长上升子序列)
- Android内存优化大全(二)
- Intent之resolveActivity() 防止APP崩溃