【备忘】WPF基础
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

【备忘】WPF基础的更多相关文章
- 个人 WPF+EF(DBFirst) 简单应用开发习惯及EF学习测试(备忘) -- 2
接上篇:个人 WPF+EF(DBFirst) 简单应用开发习惯及EF学习测试(备忘) -- 1 Step1 在主程序中设置连接数据库 从Model类库的 App.Config 把数据库字符串拷贝出来, ...
- Linux基础之常用基本命令备忘
Linux基础之常用基本命令备忘 PWD 查询当前所在Linux上的位置 / 根目录 CD(change directory)切换目录 语法 CD /(注意添加空格) LS ...
- UITextView -- 基础备忘
UITextView 这篇文章只涉及到基本的使用,日后会写一些关于结合TextKit的备忘 基本属性 let screenSize = UIScreen.mainScreen().bounds.siz ...
- Nmap备忘单:从探索到漏洞利用(Part 4)
这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...
- HTML5终极备忘大全
二.文字备忘之标签 HTML5中新增的标签 <article> 定义文章 <aside> 定义页面内容旁边的内容 <audio> 定义声音内容 <canvas ...
- [转] HTML5终极备忘大全(图片版+文字版)---张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1544 一.前言兼图片 ...
- Table view 备忘
Table view 备忘 本篇会以备忘为主,主要是一些基础的代理方法和数据源方法具体的优化好点子会后续跟上. Table view的数据源方法 必须实现的数据源方法 // 返回每一行的cell,可以 ...
- AngularJS之备忘与诀窍
译自:<angularjs> 备忘与诀窍 目前为止,之前的章节已经覆盖了Angular所有功能结构中的大多数,包括指令,服务,控制器,资源以及其它内容.但是我们知道有时候仅仅阅读是不够的. ...
- ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘
本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...
- Express模版引擎hbs备忘
最近几天折腾了下express,想找个合适的模版引擎,下面是一些折腾过程的备忘 选择标准 选择一门模版语言时,可能会考虑的几点 语法友好(micro tmpl那种语法真是够了) 支持模版嵌套(子模版的 ...
随机推荐
- 设置storyboard拉伸属性
- RGB 的调色
通过 RGB 三通道所占比的组合(通过三元素长的元组存储),可呈现丰富的色彩样式: [0, 0, 0] ⇒ 黑色,[1, 1, 1] ⇒ 白色 [1, 0, 0] ⇒ 红色,[0, 1, 0] ⇒ 绿 ...
- 解决eclipse 保存卡顿的问题
开发十年,就只剩下这套Java开发体系了 >>> eclipse 如果启动慢,还可以接收. 可是如果是 保存的时候卡顿, 有时候会 卡顿 3秒-5 秒的,感觉到写代码特别的不顺畅 ...
- sql数据库恢复神器--Log Explorer 4.2使用教程
对于程序员来说,世界最悲催的事情是什么?——就是手贱,把数据库的数据给删掉了,更悲催的是木有任何数据库备份 感谢万能的度娘,感谢无私奉献的网友们,最感谢强大的LogExplorer工具 . 使用Lo ...
- 《Facebook效应》
前两年风靡了一阵子的电影<社交网络>毕竟是电影,一种艺术的方式的表达.虽然无法完全的印证<Facebook 效应>一书中记载的正确性,但其细节足以给人启示. 电影中,主人公炫酷 ...
- 避免单线程单元 (STA) COM 组件
默认情况下,ASP.NET 不允许任何 STA COM 组件在页面内运行.若要运行它们,必须在 .aspx 文件内将 ASPCompat=true 属性包含在 @ Page 指令中.这样就将执行用的线 ...
- Android中TabHost中实现标签的滚动以及一些TabHost开发的奇怪问题
最近在使用TabHost的时候遇到了一些奇怪的问题,在这里总结分享备忘一下. 首先说一点TabActivity将会被FragmentActivity所替代,但是本文中却是使用的TabActivity. ...
- Python 金融数据分析 (一)—— 股票数据
1. tushare 库 tushare 的官网请见:TuShare -财经数据接口包,是国人自己开发的 Python 爬数据工具(所谓的爬,自然就是在线连网获取数据),囊括股票.期货.宏观经济.电影 ...
- Visual Studio 2012以后无法保存只读文件的问题
https://stackoverflow.com/questions/12497216/visual-studio-2012-will-not-save-overwrite-read-only-fi ...
- 一言不合就写socket的post和get请求(拼内容,然后发出去即可)
一言不合就写socket的post和get请求.写个桌面程序,利用java写get和post请求.测试成功: SocketReq.java package com.test.CipherIndex; ...