摘要:样式很好理解,就像CSS里的一样,无需多加解释 1. 样式中的Setter 使用示例: <Window x:Class="DeepXAML.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xam... 阅读全文
无废话WPF系列14:命令
2011-02-27 11:11 by 敏捷的水, 3140 阅读, 0 推荐, 收藏, 编辑
摘要:一、WPF为何需要命令 我们已经知道WPF里已经有了路由事件,可以发布及传播一些消息,那为什么还需要命令呢?这是因为事件指负责发送消息,对消息如何处理则不管,而命令是有约束力,每个接收者对命令执行统一的行为,比如菜单上的保存,工具栏上的保存都必须是执行同样的保存。 二、命令系统的基本元素 命令(Command):实现了ICommand接口的类,经常使用的有RoutedCommand类 命令源: 是... 阅读全文
无废话WPF系列13:路由事件
2011-02-27 11:10 by 敏捷的水, 1639 阅读, 0 推荐, 收藏, 编辑
摘要:逻辑树 <Window> <Grid> <Button> <StackPanel> <Image/> <TextBlock/> </StackPanel> </Button> </Grid></Window>但是实际上这些元素在运行时会扩展为可是树事件路由 对逻辑树和可视树有所了解很有必要,因为路由事件主要是根据可视树进行路由。路由事件支持三种路由策略:气泡、隧道和直接。 气泡事件最为常见,它表示... 阅读全文
无废话WPF系列12: 依赖属性和附加属性
2011-02-27 11:09 by 敏捷的水, 3348 阅读, 2 推荐, 收藏, 编辑
摘要:一、依赖属性 依赖属性就是自己自己没有值,通过Binding从数据源获得值,就是依赖在别人身上,拥有依赖属性的对象称为依赖对象。 几种应用依赖属性的场景: 1. 希望可在样式中设置属性。 2. 希望属性支持数据绑定。 3. 希望可使用动态资源引用设置属性。 4. 希望从元素树中的父元素自动继承属性值。 5. 希望属性可进行动画处理。 6. 希望属性系统在属性系统、环境或用户执行的操作或者读取并使用... 阅读全文
无废话WPF系列11: 数据转换
2011-02-19 20:15 by 敏捷的水, 1301 阅读, 2 推荐, 收藏, 编辑
摘要:有时我们展现的数据,需要进行转换,比如如果一个学生的成绩过了60,我们显示一个Pass的图片。 XAML: 后台代码: 运行结果 阅读全文
无废话WPF系列10: Binding对数据的检验
2011-02-19 19:45 by 敏捷的水, 1777 阅读, 0 推荐, 收藏, 编辑
摘要:设置Binding的ValidationRules属性对Binding进行检验 后台代码 同样,我们在XAML里也可以设置验证 后台代码: 阅读全文
无废话WPF系列9: Binding的源
2011-02-19 16:45 by 敏捷的水, 3807 阅读, 8 推荐, 收藏, 编辑
摘要:1. 绑定到其它元素 2. 绑定到静态资源4. 绑定到指定类型的父元素5. 绑定到对象 6. 绑定到集合7. DataContext共享源我们需要将同一资源绑定到多个 UI 元素上,很显然到处写 "{Binding Source={StaticResource person}}" 是件很繁琐且不利于修改的做法。WPF 提供了一个称之为 "数据上下文 (DataContext)" 的东西让我们可以在多个元素上共享一个源对象,只需将其放到父元素 DataContext 属性即可。当我们不给 Binding 扩展标志指定 Source 属性时,它会自动寻找上级父元素的数据上下文。8. 使用XML作 阅读全文
无废话WPF系列8:绑定Binding及模式
2011-02-19 16:42 by 敏捷的水, 6315 阅读, 1 推荐, 收藏, 编辑
摘要:绑定,就是把一个对象属性的值绑定在别的对象的属性上 1. 默认绑定 public class Company { public string Name { get; set; } } XAML代码 后端代码: 我们把第一个文本框的值改为IBM,并点击按钮 这个结果说明,我们绑定到一个普通的UI上时,前端的(绑定的目标)改变会时... 阅读全文
无废话WPF系列7:WPF布局控件
2011-02-19 16:40 by 敏捷的水, 2787 阅读, 1 推荐, 收藏, 编辑
摘要:一、 Grid a. 单元格的宽度可以设置三类值 绝对值:double数值加单位后缀 比例值:double数值加一个星号* 自动值: auto,高度将有内部的控件的高度和宽度决定。 b. Grid可接受的宽度和高度的单位 1in=96px 1cm=(96/2.54)px 1pt=(96/72) px c. 示例 如果没有设置height,实际上这个height默认被设置为1*, 这里说一下星号(*),解析器会把左右比例值加起来作为分母,把每个比例值做为分子,乘以未被占用的像素数,这样就算出每一个具体的值。我们假设总高为200,那么上面的2*=(2/(2+1+1))*(200- 阅读全文
无废话WPF系列6:各类控件家族详解
2011-02-19 16:39 by 敏捷的水, 1908 阅读, 2 推荐, 收藏, 编辑
摘要:1. ContentControl族 他们都继承ContentControl,都是控件,内容属性的名称为Content,只能由单一元素充当起内容 包含的控件有: ButtonBase RepeatButton CheckBox ComboBoxItem Button ContentControl Lable Frame ToggeButton GridViewColumnHeader GroupItem ListBoxItem RadioButton ListViewItem NavigationWindow ScrollViewer StatusBarItem ToolTip UserCo 阅读全文
无废话WPF系列5:控件派生图
2011-02-19 16:37 by 敏捷的水, 1325 阅读, 0 推荐, 收藏, 编辑
摘要:1. WPF类控件的派生关系图,紫色的部分开始才算是进入WPF的框架里。 2. WPF控件图 WPF的UI控件主要有以下类型,ContentControl, HeaderedContentControl, ItemsControl, HeaderedItemsControl, Panel, Adorner(文字点缀元素), Flow Text(流式文本元素), TextBox, TextBlock, Shape. 阅读全文
无废话WPF系列4: x名称空间
2011-02-19 16:37 by 敏捷的水, 2930 阅读, 0 推荐, 收藏, 编辑
摘要:xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 这个命名空间存放的就是XAML和XAML编译器沟通的东西,比如编译时与那个C#代码合并等 一、 在XAML中出现的方式有三种 1.标签扩展: x:Array, x:Null, x:Static, x:Type 2. XAML指令元素: x:Code, x:XData 3. Attribute: x:Class, x:ClassModifier, x:FieldModifier, x:Key, x:Name, x: Shared, X:Subclass, x:TypeArgum 阅读全文
无废话WPF系列3: XAML中为对象属性赋值
2011-02-19 16:36 by 敏捷的水, 2553 阅读, 0 推荐, 收藏, 编辑
摘要:1. 使用标签的Attribute为对象属性赋值 我们可以按上面的方式用字符串来赋值,但是比如上面的Fill其实Shape.Fill类型,那为什么我么可以赋Red呢?因为WPF使用TypeConverter进行了转换. 2. 使用TypeConverter类将XAML的Attribute与对象的Property进行转换 3. 标记扩展(Markup Extensions) 标记扩展是一种特殊的Attribute=value语法,Value是由一对花括号及其括起来的内容组成,XAML编译器会对这样的内容做出解析,生成相应的对象。标记扩展是可以嵌套,有一些简写,比如{Binding Value,& 阅读全文
无废话WPF系列2: InitializeComponent方法定义哪里
2011-02-19 16:34 by 敏捷的水, 4959 阅读, 2 推荐, 收藏, 编辑
摘要:后代代码: 我们定位到那个方法转到定义,发现没反应。 实际上这个方法是编译时WPF会为我自动生成,编译后在下面红色标注的地方打开MainWindow.g.cs,在这个文件可以找到这个方法的定义。 阅读全文
无废话WPF系列1:XAML分析
2011-02-19 16:34 by 敏捷的水, 2213 阅读, 2 推荐, 收藏, 编辑
摘要:新建一个程序,我们来分析一下这段最简单的XAML 这个命名空间http://schemas.microsoft.com/winfx/2006/xaml/presentation是WPF的硬编码,告诉编译器自动引入如下命名空间而且作为默认命名空间,这个是绘制UI相关的程序集 这里还有一个x命名空间xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml",这个命名空间是对应XAML解析功能的,也就是和XAML编译器交流用的,比如x:Class="DeepXAML.MainWindow"就是告诉编译器将包含它的标签解析成类时,和那个类一起合并。X 阅读全文