随笔分类 - [13]WPF
摘要:WPF应用程序中的程序集资源与其他.NET应用程序中的程序集资源在本质上是相同的。基本概念是为项目添加文件,从而Visual studio可将其嵌入到编译过的应用程序的EXE或DLL文件中。WPF程序集资源与其他应用程序中的程序集资源之间的重要区别是引用他们的寻址系统不同。 在前面章节已讨论过程序集
阅读全文
摘要:上一章介绍了有关WPF应用程序中使用Application对象的方式,接下来看一下如何使用Application对象来处理一些更普通的情况,接下俩介绍如何初始化界面、如何处理命名行参数、如何处理支付窗口之间的交互、如何添加跟踪文档以及如何创建单示例应用程序。 一、显示初始化界面 WPF应用程序的运行
阅读全文
摘要:在WPF中,应用程序会经历简单的生命周期。在应用程序启动后,将立即创建应用程序对象,在应用程序运行时触发各种应用程序事件,你可以选择监视其中的某些事件。最后,当释放应用程序对象时,应用程序将结束。 一、创建Application对象 使用Application类的最简单方式是手动创建它。下面的示例演
阅读全文
摘要:WPF包含两个日期控件:Calender和DatePicker。这两个控件都被设计为允许用户选择日期。 Calendar控件显示日期,在与Windows操作系统中看到的日历(例如,当配置系统日期时看到的日历)相似。该控件每次显示一个月份,允许从一个月份跳到另一个月份(通过单击箭头按钮),或跳到某个特
阅读全文
摘要:WPF提供了三个使用范围概念的控件。这些控件使用在特定最小值和最大值之间的数值。这些控件——ScrollBar、ProgressBar以及Slider——都继承自RangeBase类(该类又继承自Control类)。尽管它们使用相同的抽象概念(范围),但工作方式却又很大的区别、 下表显示了Range
阅读全文
摘要:WPF提供了许多封装项的集合的控件,本章介绍简单的ListBox和ComboBox控件,后续哈会介绍更特殊的控件,如ListView、TreeView和ToolBar控件。所有这些控件都继承自ItemsControl类(ItemsControl类本身又继承自Control类)。 ItemsContr
阅读全文
摘要:WPF提供了三个用于输入文本的控件:TextBox、RichTextBox和PasswordBox。PasswordBox控件直接继承自Control类。TextBox和RichTextBox控件间接继承自TextBoxBase类。 与前面看到的内容控件不同,文本框能够包含的内容类型是有限的。Tex
阅读全文
摘要:内容控件不仅包括基本控件,如标签、按钮以及工具提示;它们还包含特殊容器,这些容器可用于构造用户界面中比较大的部分区域。 首先介绍ScrollViewer控件,该控件直接继承自ContentControl类,提供了虚拟界面,允许用户围绕更大的元素滚动。与所有内容控件一样,ScrollViewer只能包
阅读全文
摘要:内容控件(content control)是更特殊的控件类型,它们可包含并显示一块内容。从技术角度看,内容控件时可以包含单个嵌套元素的控件。与布局容器不同的是,内容控件只能包含一个子元素,而布局容器主要愿意可以包含任意多个牵头元素。 正如前面所介绍,所有WPF布局容器都继承自抽象类Panel,该类提
阅读全文
摘要:WPF窗口充满了各种元素,但这些元素中只有一部分是控件。在WPF领域,控件通常被描述为与用户交互的元素——能接收焦点并接受键盘或鼠标输入的元素。明显的例子包括文本框和按钮。然而,这个区别有时有些模糊。将工具提示视为控件,因为它根据用户鼠标的移动显示或消失。将标签视为控件,因为它支持记忆码(mnemo
阅读全文
摘要:多点触控(multi-touch)是通过触摸屏幕与应用程序进行交互的一种方式。多点触控输入和更传统的基于笔(pen-based)的输入的区别是多点触控识别手势(gesture)——用户可移动多根手指以执行常见操作的特殊方式。例如,在触摸屏上放置两根手指并同时移动他们,这通常意味着“放大",而以一根手
阅读全文
摘要:鼠标事件执行几个关联的任务。当鼠标移到某个元素上时,可通过最基本的鼠标事件进行响应。这些事件是MouseEnter(当鼠标指针移到元素上时引发该事件)和MouseLeave(当鼠标指针离开元素时引发该事件)。这两个事件都是直接事件,这意味着他们不使用冒泡和隧道过程,而是源自一个元素并且只被该元素引发
阅读全文
摘要:当用户按下键盘上的一个键时,就会发生一系列事件。下表根据他们的发生顺序列出了这些事件: 表 所有元素的键盘事件(按顺序) 键盘处理永远不会像上面看到的这么简单。一些控件可能会挂起这些事件中的某些事件,从而可执行自己更特殊的键盘处理。最明显的例子是TextBox控件,它挂起了TextInput事件。对
阅读全文
摘要:前两章学习了WPF事件的工作原理,现在分析一下在代码中可以处理的各类事件。尽管每个元素都提供了许多事件,但最重要的事件通常包括以下5类: 生命周期事件:在元素被初始化、加载或卸载时发生这些事件。 鼠标事件:这些事件是鼠标动作的结果。 键盘事件:这些事件是键盘动作(如按下键盘上的键)的结果。 手写笔事
阅读全文
摘要:由上一章可知,WPF中的许多控件都是内容控件,而内容控件可包含任何类型以及大量的嵌套内容。例如,可构建包含图形的按钮,创建混合了文本和图片内容的标签,或者为了实现滚动或折叠的显示效果而在特定容器中放置内容。设置可以多次重复嵌套,直至达到你所希望的层次深度。如下所示: <Window x:Class=
阅读全文
摘要:每个.NET开发人员都熟悉“事件”的思想——当有意义的事情发生时,由对象(如WPF元素)发送的用于通知代码的消息。WPF通过事件路由(event routing)的概念增强了.NET事件模型。事件路由允许源自某个元素的事件由另一个元素引发。例如,使用事件路由,来自工具栏按钮的单击事件可在被代码处理之
阅读全文
摘要:在定义任何类型的属性时,都需要面对错误设置属性的可能性。对于传统的.NET属性,可尝试在属性设置器中捕获这类问题。但对于依赖项属性而言,这种方法不合适,因为可能通过WPF属性系统使用SetValue()方法直接设置属性。 作为代替,WPF提供了两种方法来阻止非法值: ValidateValueCal
阅读全文
摘要:依赖项属性是标准.NET属性的全新实现——具有大量新增价值。在WPF的核心特性(如动画、数据绑定以及样式)中需要嵌入依赖项属性。WPF元素提供的大多数属性都是依赖项属性。到目前位置所见到的所有示例都用到了依赖项属性,但你可能还没有意识到这一点。这是因为依赖项属性的用法和普通属性的是相同的。 然而,依
阅读全文
摘要:前几章用了相当大的篇幅研究有关WPF布局容器的复杂内容。在掌握了这些基础知识后,就可以研究几个完整的布局示例。通过研究完整的布局示例,可更好的理解各种WPF布局概念在实际窗口中的工作方式。 一、列设置 布局容器(如Grid面板)使得窗口创建整个布局结构变得非常容易。例如,分析如下显示的窗口及设置。该
阅读全文
摘要:Canvas面板允许使用精确的坐标放置元素,如果设置数据驱动的富窗体和标准对话框,这并非好的选择;但如果需要构建其他一些不同的内容(例如,为图形工具创建创建绘图表面),Canvas面板可能是个有用的工具。Canvas面板还是最轻量级的布局容器。这是因为Canvas面板没有包含任何复杂的布局逻辑,用以
阅读全文