• 1. XAML 基础教程
  • 2. 通过这一节课,对XAML概念,XAML基础语法(如:命名空间、对象、属性和事件等)有更深的理解,掌握如何通过XAML代码生成常用控件。
  • 3. 132XAML概览常用控件基础语法
  • 4. XAML概览
  • 5. XML简介XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义,需要自行定义标签 George John Reminder Don't forget the meeting!
  • 6. XAML简介控件层次结构一目了然 UI代码与业务逻辑代码相隔离 声明式语言,更便于利用工具自动生成代码 XAML 标记通常使用与 XML 中所定义的字符实体和转义序列相同的字符实体和转义序列 主要用于Silverlight,WPF,Windows Phone和Windows 8应用开发XAML = Extensible Application Markup Language
  • 7. C# VS XAML
  • 8. 为什么学习XAMLXAML语言应用于多个开发领域 具有Silverlight, WPF, Windows Phone以及Windows 8开发经验的程序员,可以将开发技能再利用,加快学习速度,提高开发效率 语言性能强大,学习曲线平缓, 有强大的开发工具支持 XAML是Windows 8 Style风格应用主要开发语言之一,XAML与C#,VB,C++配合开发Windows 8 Style应用。
  • 9. XAML作用XAML用于声明UI及UI元素的一种格式 XAML用于声明样式和模板的格式,这些样式和模板应用于控件和 UI 的逻辑基础 XAML 定义 UI 的可视外观,关联的代码隐藏文件定义逻辑 XAML 可在 Expression Blend 与 Visual Studio 之间互换
  • 10. 基础语法
  • 11. 命名空间XAML命名空间的概念和C#代码中的Using,VB.Net代码中的Import类似 为对象元素的实例化提供引用类库声明 编程框架能够区分用户声明的标记和框架声明的标记,并通过命名空间限定来消除可能的标记冲突
  • 12. Windows 8应用默认命名空间
  • 13. 命名空间格式语法结构为“xmlns:”+“命名空间前缀名”,默认命名空间无需定义命名空间前缀名
  • 14. 常见“X:前缀”类型命名空间x:Key为ResourceDictionary中的每个资源设置一个唯一键x:Class为 XAML 页提供代码隐藏的类的命名空间和类名称,并命名由标记编译器的生成操作在应用程序模型中创建或链接的类x:Name处理 XAML 中定义的对象元素后,为运行时代码中存在的实例指定运行时对象名称
  • 15. 对象声明方式使用开始标记和结束标记将对象实例化为XML格式的元素 对象中可以包含其他对象 若一个对象中不包含其他对象,可以使用一个自结束标记来声明对象
  • 16. 属性设置属性是对XAML元素特征进行描述的方法 属性不允许在XAML中重复设置多次 允许在托管代码中改变元素的属性值
  • 17. 属性设置几种方式使用属性语法 使用属性元素语法 使用内容元素语法 使用集合语法
  • 18. 属性语法只有实例化对象才可以设置实例属性,格式如下: 或者 每个属性对应一个属性值,属性值类型必须与属性匹配 一个标记中可以设置对象的多个属性
  • 19. 属性语法 或者
  • 20. 属性元素语法某些属性可以使用属性元素语法来设置,格式为:
  • 21. 属性元素语法
  • 22. 内容元素语法某些元素的属性支持内容元素语法,允许忽略元素的名称 实例对象会根据XAML元素中的第一个标记值来设置属性 对于大量的格式化文本,使用内容元素语法更加灵活 属性标记之间可以插入大量的文本内容 Windows 8
  • 23. 内容元素语法 Windows 8 是微软即将推出的最新 Windows 系列系统。Windows 8 支持个人电脑(Intel 平台系统)及平面电脑(Intel 平台系统 或 ARM 平台系统)。Windows 8 大幅改变以往的操作逻辑,提供更佳的屏幕触控支持。
  • 24. 集合语法元素支持一个属性元素的集合,才使用集合语法进行设置属性 使用托管代码的Add方法来增加更多的集合元素 本质是向对象的集合中添加属性项
  • 25. 集合语法 简化
  • 26. 集合语法 省略GradientStopCollection 隐式的属性设置方法
  • 27. 附加属性附加属性作用于支持附加属性的元素 附加属性是由支持附加属性的父元素产生作用,支持附加属性的元素会继承所在的父元素的属性 附加属性的格式:AttachedPropertyProvider.PropertyName
  • 28. 附加属性
  • 29. 依赖属性英文名称:Dependency Properties 依赖属性和CLR属性类似,提供一个实例级私有字段的访问封装,通过GetValue和SetValue访问器实现属性的读写操作 最重要一个特点是属性值依赖于一个或者多个数据源,提供这些数据源的方式也可以不同 由于依赖多数据源的缘故,故称之为依赖属性
  • 30. 依赖属性可以通过多种不同类型的数据源进行赋值,不同赋值顺序影响属性值的改变属性默认赋值样式控制器数据模版 控制模版本地赋值 数据绑定 资源引用动画低高优先级别
  • 31. 依赖属性
  • 32. 依赖属性
  • 33. 事件(Event)Windows消息机制中重要概念之一,最常见的人机交互手段之一 XAML帮助应用管理用户输入,执行不同的行为 引入增强型事件处理系统-Routed Event(路由事件) Windows 8应用开发中,事件常常被用于控制更改通知操作
  • 34. 事件基础语法基础语法: XAML:
  • 35. 路由事件处理方式Bubbling Event Tunneling Event Direct Routing Event
  • 36. 标记扩展(Markup Extensions)实际项目中为XAML控件属性赋值经常遇到: 设计时属性之处于未知状态 运行时才能获取到 轻松实现XAML页面属性赋值,资源引用,类型转换等操作
  • 37. 常用标记扩展StaticResource引用数据字典中定义的静态资源TemplateBindingXAML页面中对象模板绑定调用BindingXAML载入时,将数据绑定到XAML对象RelativeSource对特定数据源绑定
  • 38. Binding
  • 39. StaticResource                                             
  • 40. TemplateBinding
  • 41. RelativeSource两种应用模式两种应用模式:Self Mode和TemplatedParent Mode 语法结构: -或-   -或-
  • 42. 使用Self模式目标对象将作为源对象绑定到自身 可以实现同一对象元素不同属性之间的绑定操作
  • 43. 使用TemplatedParent模式仅在ControlTemplate或者DataTemplate下有效 不同的模板,将返回不同类型的绑定结果                                                                                              
  • 44. 大小写区分XAML 是一种区分大小写的语言 XAML 元素和属性的名称区分大小写 属性值可能区分大小写,这取决于如何针对特定属性处理属性值
  • 45. 空白规范化移除东亚字符之间的换行符 将所有空白字符(空格、换行符和制表符)转换为空格 删除所有连续的空格,将其替换为一个空格 删除紧跟在开始标记后面的一个空格 删除紧靠在结束标记前面的一个空格
  • 46. 演示 XAML语法
  • 47. 常用控件
  • 48. 布局控件Canvas Grid StackPanel
  • 49. Canvas常用属性和方法方法 GetLeft 取得目标元素的附加属性Canvas.Left 的值 GetTop 取得目标元素的附加属性Canvas.Top 的值 GetZIndex 取得目标元素的附加属性Canvas. ZIndex 的值 SetLeft 设置目标元素的附加属性Canvas.Left 的值 SetTop 设置目标元素的附加属性Canvas.Top 的值 SetZIndex 设置目标元素的附加属性Canvas. ZIndex 的值 附加属性 Canvas.Left 获取或设置目标元素距离其父窗体Canvas左侧边缘的距离 Canvas.Top 获取或设置目标元素距离其父窗体Canvas顶部边缘的距离 Canvas.Zindex 获取或设置目标元素距离其父窗体Canvas Z轴的顺序
  • 50. CanvasItem1Item2Item3Item4Item5Item6
  • 51. Grid常用属性属性 Grid.Column 读取或设定指定FrameworkElement的附加属性Grid.Column 的值 Grid.ColumnSpan 读取或设定指定FrameworkElement的附加属性Grid.ColumnSpan的值 Grid.Row 读取或设定指定FrameworkElement的附加属性Grid.Row 的值 Grid.RowSpan 读取或设定指定FrameworkElement的附加属性Grid.RowSpan的值
  • 52. Grid常用方法方法 GetColumn 取得指定FrameworkElement的附加属性Grid.Column 的值 GetColumnSpan 取得指定FrameworkElement的附加属性Grid.ColumnSpan的值 GetRow 取得指定FrameworkElement的附加属性Grid.Row 的值 GetRowSpan 取得指定FrameworkElement的附加属性Grid.RowSpan的值 SetColumn 设置指定FrameworkElement的附加属性GetColumn 的值 SetColumnSpan 设置指定FrameworkElement的附加属性Grid.ColumnSpan 的值 SetRow 设置指定FrameworkElement的附加属性Grid.Row 的值 SetRowSpan 设置指定FrameworkElement的附加属性Grid.Row 的值
  • 53. Item1Item2Item3Item4Item5Item6
  • 54. StackPanel常用事件、方法和属性事件 HorizontalSnapPointsChanged 当水平贴靠点的尺寸变化时触发 VerticalSnapPointsChanged 当竖直贴靠点的尺寸变化时触发 方法 GetIrregularSnapPoints 返回不规则贴靠点的集合 GetRegularSnapPoints 返回规则贴靠点的集合 属性 Orientation 获取或设置子元素的排列方向
  • 55. StackPanel55Item1Item2Item3Item4Item5Item6Item1Item2Item3Item4Item5Item6
  • 56. 演示 布局控件
  • 57. 基础控件 按钮复选框组合框日期选取器单选按钮超链接列表框评级进度条进度环时间选取器切换开关滑块
  • 58. Button常用事件和属性事件 Click 当点击按钮时触发 属性 ClickMode 获取或设置Click事件触发时,设备行为的依据 Command 获取或设置当按钮被按下时调用的命令 IsPointerOver 获取一个值,标明设备的指针是否在按钮控件上 IsPressed 获取一个值,标明按钮是否是按下的状态
  • 59. ButtonXAML:
  • 60. RadioButton常用事件和属性事件 Click 当点击按钮时触发 Checked 当切换到选中状态时触发 Indeterminate 当切换到不确定状态时触发 Unchecked 当切换到未选中时触发 属性 GroupName 获取或设置RadioButton控件的组名称
  • 61. RadioButtonXAML:
  • 62. HyperlinkButtonXAML: C#: void HyperlinkButton_Click(object sender, RoutedEventArgs e) { ClickMessage2.Text = "You clicked the HyperlinkButton"; }重要属性: NavigateUri 当点击HyperlinkButton跳转到的地址
  • 63. CheckBoxXAML: 重要事件: Checked 当切换到选中状态时触发 Unchecked 当切换到未选中时触发
  • 64. ToggleSwitchXAML: 重要方法: OnHeaderChanged 标题变化时执行该方法 OnOffContentChanged 当OffContent变化时执行该方法 OnOnContentChanged 当OnContent变化时执行该方法 OnToggled 当Toggled事件触发时调用该方法
  • 65. ProgressRingXAML:
  • 66. ProgressBarXAML:
  • 67. ComboBox常用方法、事件和属性事件 DropDownClosed 当ComboBox下拉框关闭时触发 DropDownOpened 当ComboBox下拉框打开时触发 方法 OnDropDownClosed 当ComboBox下拉框关闭时被调用 OnDropDownOpened 当ComboBox下拉框打开时被调用 属性 IsDropDownOpenProperty 标识Combox的下拉框状态 IsSelectionBoxHighlighted 获取或设置选择的条目是否高亮显示 MaxDropDownHeight 获取或设置下拉框的最大高度 SelectedIndex 获取或设置选择的索引值
  • 68. ComboBoxXAML:
  • 69. SliderXAML:
  • 70. 演示 基础控件
  • 71. 文本编辑控件单行文本框密码多行文本框格式文本框清除按钮显示按钮
  • 72. 文本编辑控件 - 行为文本选择: 鼠标和键盘 剪切、复制和粘贴触摸拼写检查
  • 73. 文本编辑控件 - 触摸键盘
  • 74. TextBlockXAML:
  • 75. TextBoxXAML:
  • 76. 演示 文本编辑控件
  • 77. 命令界面消息对话框弹出窗口应用栏工具提示设置窗格上下文菜单
  • 78. AppBarXAML:
  • 79. 演示 应用栏
  • 80. 总结XAML概览:XAML简介、为什么学习XAML、XAML作用 基础语法:命名空间、对象声明、属性设置、事件、标记扩展、大小写区分、空白规范化 常用控件:布局控件、基础控件、文本编辑控件、命令界面
  • 81. 相关资源XAML Overview Windows 8 Sample Code 《Programming Windows Sixth Edition》 http://shop.oreilly.com/product/0790145369079.do 《Programming Windows Phone 7》 http://shop.oreilly.com/product/0790145316707.do?intcmp=ba-ms-books-int-search-windows-phone-ct
  • 82. © 2011 Microsoft Corporation。保留所有权利。Microsoft、Windows、Windows Vista 及其他产品名称是或者可能是在美国和/或其他国家/地区的注册商标和/或商标。 此处包含的信息仅供参考,并代表 Microsoft Corporation 截至本演示文稿发布之日的最新观点。由于 Microsoft 必须响应不断变化的市场条件,所以不应将本文视为 Microsoft 一方的承诺,Microsoft Corporation 也无法保证所提供信息在本文发布之后的准确性。MICROSOFT 对本演示文稿中包含的信息不做任何明示、暗示或法定的担保。Q&A
  • 83. © 2011 Microsoft Corporation。保留所有权利。Microsoft、Windows、Windows Vista 及其他产品名称是或者可能是在美国和/或其他国家/地区的注册商标和/或商标。 此处包含的信息仅供参考,并代表 Microsoft Corporation 截至本演示文稿发布之日的最新观点。由于 Microsoft 必须响应不断变化的市场条件,所以不应将本文视为 Microsoft 一方的承诺,Microsoft Corporation 也无法保证所提供信息在本文发布之后的准确性。MICROSOFT 对本演示文稿中包含的信息不做任何明示、暗示或法定的担保。