见导航概述。
应用程序类XBAP 和独立应用程序通常非常复杂,需要额外的应用程序范围的服务,包括启动和生存期管理、共享属性以及共享资源。
Application 类封装了这些服务以及更多内容,并且只需使用 XAML 即可实现,如下面的示例所示。
VBCCFJScript复制不支持该语言或没有可用的代码示例。
此标记是独立应用程序的应用程序定义,并指示 WPF 创建一个在应用程序启动时自动打开MainWindow 的 Application 对象。
理解 Application 的一个关键概念在于,它为独立应用程序和浏览器承载的应用程序提供了一个通用的支持平台。
例如,浏览器承载的应用程序可以使用前面的 XAML,以便在 XBAP 启动时自动导航到某个页面,如下面的示例所示。
VBCCFJScript复制不支持该语言或没有可用的代码示例。
有关更多信息,请参见应用程序管理概述。
安全性由于 XBAP 承载于浏览器中,因此安全性至关重要。
特别是,XBAP 使用部分信任的安全性沙盒强制施加限制,这些限制少于或等于对基于 HTML 的应用程序所施加的限制。
此外,可以从部分信任的 XBAP 中安全运行的每个 HTML 功能都使用全面的安全进程进行了测试,WindowsPresentation Foundation 安全策略 — 安全工程中对此进行了详细介绍。
尽管如此,大部分 WPF 功能仍能够从 XBAP 中安全执行,如 Windows PresentationFoundation 部分信任安全性中所述。
控件应用程序模型提供的用户体验是构造控件。
在 WPF 中,“控件”是一个总括性术语,适用于窗口或页面中承载的、具有 用户界面 UI 并且实现某些行为的一种 WPF 类。
有关更多信息,请参见控件概述。
有关介绍性示例,请参见控件库示例。
WPF 控件一览此处列出了内置的 WPF 控件。
按钮:Button 和 RepeatButton。
对话框:OpenFileDialog、PrintDialog 和 SaveFileDialog。
数字墨迹:InkCanvas 和 InkPresenter。
文档:DocumentViewer、FlowDocumentPageViewer、FlowDocumentReader、 FlowDocumentScrollViewer 和 StickyNoteControl。
输入:TextBox、RichTextBox 和 PasswordBox。
布局:Border、BulletDecorator、Canvas、DockPanel、Expander、Grid、GridView、 GridSplitter、GroupBox、Panel、ResizeGrip、Separator、ScrollBar、ScrollViewer、 StackPanel、Thumb、Viewbox、VirtualizingStackPanel、Window 和 WrapPanel。
媒体:Image、MediaElement 和 SoundPlayerAction。
菜单:ContextMenu、Menu 和 ToolBar。
导航:Frame、Hyperlink、Page、NavigationWindow 和 TabControl。
选择:CheckBox、ComboBox、ListBox、TreeView、RadioButton 和 Slider。
用户信息:AccessText、Label、Popup、ProgressBar、StatusBar、TextBlock 和 ToolTip。
输入和命令控件通常检测和响应用户输入。
WPF 输入系统使用直接事件和路由事件来支持文本输入、焦点管理和鼠标定位。
有关更多信息,请参见输入概述。
应用程序通常具有复杂的输入要求。
WPF 提供了一个命令系统,它将用户输入操作与响应这些操作的代码相分离。
有关更多信息,请参见命令概述。
布局创建 UI 时,您通过按位置和大小排列控件来形成一种布局。
任何布局的主要要求都是适应窗口大小和显示设置的变化。
WPF 为您提供了一个一流的可扩展布局系统,而不是强制您编写代码以使布局适应这些情况。
布局系统的基础是相对定位,它提高了适应窗口和显示条件变化的能力。
此外,布局系统还管理控件之间的协商以确定布局。
协商过程分为两步:第一步,控件向父控件通知它所需的位置和大小;第二步,父控件通知该控件它可以具有多大空间。
布局系统通过基本 WPF 类公开给子控件。
对于通用的布局,如网格、堆叠和停靠,WPF 包括了几个布局控件: Canvas :子控件提供其自己的布局。
DockPanel :子控件与面板的边缘对齐。
Grid :子控件按行和列放置。
StackPanel :子控件垂直或水平堆叠。
VirtualizingStackPanel :子控件被虚拟化,并沿水平或垂直方向排成一行。
WrapPanel :子控件按从左到右的顺序放置,如果当前行中的控件数多于该空间所允许的 控件数,则换至下一行。
下面的示例使用 DockPanel 排列几个 TextBox 控件。
VBCCFJScript复制不支持该语言或没有可用的代码示例。
DockPanel 允许子 TextBox 控件通知它如何排列这些子控件。
为此,DockPanel 实现一个 Dock属性,该属性公开给子控件,以便每个子控件指定一个停靠样式。
说明:由父控件实现的、供子控件使用的属性是一种 WPF 构造,称为“附加属性”(请参见附加属性概述)。
下图演示了上一示例中 XAML 标记的结果。
有关更多信息,请参见布局系统。
有关介绍性示例,请参见 WPF 布局库示例。
数据绑定创建大多数应用程序的目的是为用户提供查看和编辑数据的方式。
对于 WPF 应用程序,存储和访问数据的工作已经由 Microsoft SQL Server 和 ADO.NET 之类的技术提供。
访问数据并将数据加载到应用程序的托管对象中后,WPF 应用程序的复杂工作才开始。
实质上它涉及到两个步骤: 1. 将数据从托管对象复制到控件中,在控件上可以显示和编辑数据。
2. 确保将使用控件对数据进行的更改复制回托管对象。
为了简化应用程序开发,WPF 提供了一个数据绑定引擎以自动执行这些步骤。
数据绑定引擎的核心单元是 Binding 类,它的任务是将控件(绑定目标)绑定到数据对象(绑定源)。
下图说明了这种关系。
下面的示例演示如何将 TextBox 绑定到自定义 Person 对象的实例。
下面的代码演示了 Person的实现。
VBCCFJScript复制Namespace SDKSample Class Person Private _name As String No Name Public Property Name As String Get Return _name End Get SetByVal value As String _name value End Set End Property End ClassEnd Namespace下面的标记将 TextBox 绑定到自定义 Person 对象的实例。
VBCCFJScript复制不支持该语言或没有可用的代码示例。
VBCCFJScript复制Imports System.Windows WindowNamespace SDKSample Partial Public Class DataBindingWindow Inherits Window Public Sub New InitializeComponent Create Person data source Dim person As Person New Person Make data source available for binding Me.DataContext person End Sub End ClassEnd Namespace在此示例中,Person 类在代码隐藏中实例化,并被设置为 DataBindingWindow 的数据上下文。
在标记中,将 TextBox 的 Text 属性绑定到 Person.Name 属性(使用“Binding ... ”XAML语法)。
此 XAML 通知 WPF 将 TextBox 控件绑定到存储在窗口的 DataContext 属性中的Person 对象。
WPF 数据绑定引擎还提供了其他支持,包括验证、排序、筛选和分组。
此外,当标准 WPF 控件显示的 UI 不合适时,数据绑定还支持使用数据模板为绑定的数据创建自定义 UI。
有关更多信息,请参见数据绑定概述。
有关介绍性示例,请参见数据绑定演示。
图形WPF 引进了一组广泛的、可伸缩且灵活的图形功能,它们具有以下优点: 与分辨率和设备无关的图形。
WPF 图形系统的基本度量单位是与设备无关的像素,它等于 一英寸的 1/96,而不管实际的屏幕分辨率是多少,为与分辨率和设备无关的呈现提供了基础。
每个与设备无关的像素都会自动缩放,以符合呈现该像素的系统上的每英寸点数 dpi 设置。
更高的精度。
WPF 坐标系是使用双精度浮点数字测量的,而不是使用单精度浮点数字。
转 换值和不透明度值也以双精度表示。
WPF 还支持广泛的颜色域 scRGB,并为管理
上一篇:
【精品】ASP简单编写论坛
下一篇:
致享和威驰哪个好点?冲着安全和空间 推荐致享