fbpx
维基百科

Windows Presentation Foundation

Windows Presentation FoundationWPF)是美國微軟公司推出.NET Framework 3.0及以后版本的组成部分之一,它是一套基于XML.NET Framework向量绘图技术的展示層开发框架,微软视其为下一代使用者介面技术,广泛被用于Windows Vista的界面开发。其早期开发阶段的代号为“Avalon[1]

WPF使用一种新的XAML(eXtensible Application Markup Language)语言来开发界面。同时WPF自带MVVM(Model-ViewModel-View)框架,这种设计模式将把界面开发以及后台逻辑很好的分开,降低了耦合度,使用户界面设计师与程序开发者能更好的合作,降低维护和更新的成本。

WPF/E是WPF的子集合,全名是:Windows Presentation Foundation Everywhere。在基於XAML與JavaScript之下,可跨越各種平台,目前WPF/E已演化為Microsoft Silverlight,擔負微軟在丰富互联网应用程序領域,並正面與Adobe Flash競爭的產品。

特徵

WPF部份之特徵如下:

繪圖服務

  • 所有的圖形皆可由Direct3D產生。
    • 目標在於統一各種顯示圖形。
    • Windows可以透過Direct3D來減輕在繪圖任務上的負荷,這項技術乃基於電腦顯示卡的繪圖處理單元(Graphics Processing Unit)。
    • 支援向量繪圖(vector graphic)。
    • 支援3D透視圖並且影響2D應用程式。

佈署

  • WPF不僅僅是建立傳統的獨立程式(standalone applications)。其部署方式可分成兩類:standalone與XAML Browser Applications(XBAP)觀點。這些佈署方式在程式的撰寫上大致類似。
    • 獨立程式之安裝方式可以借由ClickOnce微軟安裝器(MSI)完成。獨立程式可被視為完全信任(full trust)具有完全存取系統資源的優點。
    • XAML Browser Application(XBAPs)是一種寄宿於網頁瀏覽器上的程式,像是Internet Explorer。寄宿的程式可取得部份信任(partial trust)的沙箱(sandbox)環境之下,且無法取得完整的系統資源,WPF的功能亦無法完全發揮。寄宿的環境必須有意地防衛惡意的程式碼。從網頁上執行XBAP(讀音"ex-bap")必須是毫無破綻的(沒有安全性或安裝提示)。雖然這樣的寄宿程式在感觀上與傳統微軟的DLL(out of process)有相異處。

互操作性

  • WPF可與Win32互相操作:經由主導(hosting)機制,可以在Win32碼之下使用Windows Presentation Foundation,或是在Windows Presentation Foundation環境下使用Win32程式碼[2]
  • Windows Forms的互操作性亦可利用ElementHost(繼承自System.Windows.Forms.ContainerControl)以及WindowsFormsHost(繼承自System.Windows.Forms.Integration)等類別達成,同時提供了Host Avalon Element的能力。

媒體播放

  • WPF針對2D圖形提供形狀基元(shape primitives),內建筆刷(brushes)、畫筆(pens)、幾何(geometries),與變形(transforms)。
  • WPF以Direct3D提供完整的3D功能。但是,WPF提供更完整的整合性在於使用者介面上(UI)、文件(documents),與媒體(media)。這使得儘可以實現3D UI, 3D文件,和3D媒體。
  • 支援了大量的圖片格式(image formats)。
  • WPF支援大量影音格式,如:WMVMPEG以及某些AVI檔。
  • WPF支援以時間為基礎的動畫效果,不同於以影格為基礎的處理方式。如此動畫的速度與系統效能就不會有所關連。
  • 文件的呈現支援ClearType,這提供一種次像素(sub-pixel)定位功能,強化其自然風格。WPF同時支援OpenType字型樣式。

数据绑定

数据绑定是在应用 UI 与其显示的数据之间建立连接的过程。 如果绑定具有正确的设置,并且数据提供适当的通知,则在数据更改其值时,绑定到该数据的元素会自动反映更改。 数据绑定还意味着,如果元素中数据的外部表示形式发生更改,则基础数据可以自动进行更新以反映更改。 例如,如果用户编辑 TextBox 元素中的值,则基础数据值会自动更新以反映该更改。

数据绑定的典型用法是将服务器或本地配置数据放置到窗体或其他 UI 控件中。 此概念在 WPF 中得到扩展,包括将大量属性绑定到不同类型的数据源。 在 WPF 中,元素的依赖属性可以绑定到 .NET 对象(包括 ADO.NET 对象或与 Web 服务和 Web 属性关联的对象)和 XML 数据。数据绑定的方式一共有四种:

  • 通过 OneWay 绑定,对源属性的更改会自动更新目标属性,但对目标属性的更改不会传播回源属性。 如果绑定的控件为隐式只读,则此类型的绑定适用。 例如,可能会绑定到股票行情自动收录器这样的源,也可能目标属性没有用于进行更改的控件接口(例如表的数据绑定背景色)。 如果无需监视目标属性的更改,则使用 OneWay 绑定模式可避免 TwoWay 绑定模式的系统开销。
  • 通过 TwoWay 绑定,更改源属性或目标属性时会自动更新另一方。 此类型的绑定适用于可编辑窗体或其他完全交互式 UI 方案。 大多数属性默认为 OneWay 绑定,但某些依赖属性(通常为用户可编辑控件的属性,例如 TextBox.Text 和 CheckBox.IsChecked)默认为 TwoWay 绑定。 用于确定依赖属性绑定在默认情况下是单向还是双向的编程方法是:使用 DependencyProperty.GetMetadata 获取属性元数据,然后检查 FrameworkPropertyMetadata.BindsTwoWayByDefault 属性的布尔值。
  • OneWayToSource 绑定与 OneWay 绑定相反;当目标属性更改时,它会更新源属性。 一个示例方案是只需要从 UI 重新计算源值的情况。
  • OneTime 绑定未在图中显示,该绑定会使源属性初始化目标属性,但不传播后续更改。 如果数据上下文发生更改,或者数据上下文中的对象发生更改,则更改不会在目标属性中反映。 如果适合使用当前状态的快照或数据实际为静态数据,则此类型的绑定适合。 如果你想使用源属性中的某个值来初始化目标属性,且提前不知道数据上下文,则此类型的绑定也有用。 此模式实质上是 OneWay 绑定的一种简化形式,它在源值不更改的情况下提供更好的性能

数据绑定在展示層並無太大負擔。WPF提供有数据模板(data templates)來控制這些数据。

使用者介面

  • WPF提供了內建元件控制項集合,包括有按鈕(button)、選單(menu)、列表盒(list box)等。
  • WPF的邏輯層與外觀展示層已形成強力的分離模式。
    • 元件的外貌樣品可以被完全改寫。

文件

對OpenType的支援包括:

  • 合字(Ligatures)
  • 舊式數碼(Old-style numerals,for example, parts of the glyph hang below the text baseline)
  • 花体字(Swash)
  • 分數形式(Fractions)
  • 上标下标
  • 小型大写字母

工具

在以往Win32應用程式發展時,絕大多數的工作都由開發人員(Developer)來處理,美術設計人員(Designer)可以涉入的相當有限,而且在Win32 API時代,要在使用者介面中實作特效的話,都需要撰寫大量的程式碼才可以做到。

在WPF中,因為大多數的使用者介面元素都可以利用XAML來宣告,因此微軟試著要將Designer和Developer結合在一起,如此可以讓Designer可以充份發揮,並且Developer也不用傷腦筋在外觀設計上,微軟的Designer工具為Microsoft Expression產品集,其中的Expression Blend即為設計WPF應用程式的設計工具,它也可以用來設計Silverlight程式。

開發人員仍然可以使用Visual Studio來開發WPF應用程式,在Visual Studio中內含WPF Designer可供開發人員使用。

WPF/E

WPF/E發展初期為微軟計畫將WPF推向各平台的計畫,目前此計畫已經被發展成為Silverlight技術。

WPF應用程式

WPF是下一代圖形API在桌面上的延伸。以WPF撰寫應用程式,具有更高的視覺品質。下表列出微軟自家的產品或是第三協力廠商的主力產品:

發行歷史

系列 版本 發佈日期 重要變更/事項 一同發佈的產品
3 3.0 2006年11月 - -
3.5 2007年11月 - -
3.5 SP1 2008年8月 - -
4 4.0 2010年4月 - -
4.5 2012年8月 - -
4.5.1 2013年10月 - -
4.52 2014年5月 - -
4.6 2015年7月 高解析度 (High Dots Per Inch; HDPI) 改善;觸控行為焦點 (Touch) 改善;程式子視窗透明 (Transparent child window) 支援 Visual Studio 2015


参考資料

  1. ^ Gharighi, A. . CodeProject.com. CodeProject. 2006-05-02 [2013-08-22]. (原始内容存档于2021-07-16). 
  2. ^ . [2007-04-03]. (原始内容存档于2008-02-06). 
  3. ^ . [2012-06-16]. (原始内容存档于2022-04-18). 

外部链接

  • (英文)
  • The Windows Presentation Foundation community portal—The WPF section of the .NET Framework 3.0 community site.
  • MSDN Windows Presentation Foundation SDK (页面存档备份,存于互联网档案馆)—Software Development Kit for WPF.
  • WPFwiki.org (页面存档备份,存于互联网档案馆)—The largest WPF FAQ question and answer repository & Wiki.
  • Getting Started (WPF) (页面存档备份,存于互联网档案馆)—Roadmap to information for developers new to WPF.
  • WPF SDK Blog (页面存档备份,存于互联网档案馆)—Active blog maintained by the WPF SDK team.
  • Windows Presentation Foundation Unleashed—The first WPF book to market, written by the lead developers Adam Nathan (页面存档备份,存于互联网档案馆)。
  • Essential Windows Presentation Foundation (页面存档备份,存于互联网档案馆)—An online WPF tutorial and reference, written by 。
  • Microsoft Expression Blend (页面存档备份,存于互联网档案馆)—Visual tool for creating Windows Presentation Foundation applications.
  • wpf made simple (页面存档备份,存于互联网档案馆)—Provides info/samples on WPF.
  • XAML.net (页面存档备份,存于互联网档案馆) Information on XAML and XBAPs, the Windows Presentation Foundation (WPF), .NET Framework 3.0 and Windows Vista]]。
  • —Microsoft's overview of Windows Presentation Foundation.
  • Windows Presentation Foundation Security Sandbox—An overview of the sandbox in which WPF browser applications run.
  • MSDN Forums for Windows Presentation Foundation—Active discussion forum for WPF developers.
  • WPF/E Google Group (页面存档备份,存于互联网档案馆)—Discussion group and list of examples.
  • —WPF/E explained in an interview with Microsoft's Director of Developer Tools.
  • More than meets the eye in Microsoft's plans—News.com's article on WPF/E
  • —A high-level overview of WPF for software developers.
  • xbap.org (页面存档备份,存于互联网档案馆)—Comprehensive information on XBAP applications.
  • - Wiki covering WPF and DirectX 10 Tutorials, Samples, Effect, News.
  • 我用43吋螢幕 各種排版錯誤 (页面存档备份,存于互联网档案馆) - 在高解析度下,WPF的排版會錯誤

windows, presentation, foundation, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目需要編修, 以確保文法, 用詞, 语气, 格式, 標點等使用恰当, 2020年10月20日, 請按照校對指引, 幫助编辑這個條目, 幫助, 討論, 此條目使用外部链接的方式可能不符合维基百科的方针或指引, 或致使內文成為链接農場, 2020年10月20日, 請協助清理過度與不適當的外部連結, 并将有用的链接移到参考文献中, 此條目需要补充更多来源, 2020年10月20日,. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目需要編修 以確保文法 用詞 语气 格式 標點等使用恰当 2020年10月20日 請按照校對指引 幫助编辑這個條目 幫助 討論 此條目使用外部链接的方式可能不符合维基百科的方针或指引 或致使內文成為链接農場 2020年10月20日 請協助清理過度與不適當的外部連結 并将有用的链接移到参考文献中 此條目需要补充更多来源 2020年10月20日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而移除 致使用者 请搜索一下条目的标题 来源搜索 Windows Presentation Foundation 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 此條目翻譯品質不佳 2020年10月20日 翻譯者可能不熟悉中文或原文語言 也可能使用了機器翻譯 請協助翻譯本條目或重新編寫 并注意避免翻译腔的问题 明顯拙劣的翻譯請改掛 a href Template D html class mw redirect title Template D d a a href Wikipedia CSD html G13 class mw redirect title Wikipedia CSD G13 a 提交刪除 此條目的引用需要进行清理 使其符合格式 2020年10月20日 参考文献应符合正确的引用 脚注及外部链接格式 Windows Presentation Foundation WPF 是美國微軟公司推出 NET Framework 3 0及以后版本的组成部分之一 它是一套基于XML NET Framework 向量绘图技术的展示層开发框架 微软视其为下一代使用者介面技术 广泛被用于Windows Vista的界面开发 其早期开发阶段的代号为 Avalon 1 WPF使用一种新的XAML eXtensible Application Markup Language 语言来开发界面 同时WPF自带MVVM Model ViewModel View 框架 这种设计模式将把界面开发以及后台逻辑很好的分开 降低了耦合度 使用户界面设计师与程序开发者能更好的合作 降低维护和更新的成本 WPF E是WPF的子集合 全名是 Windows Presentation Foundation Everywhere 在基於XAML與JavaScript之下 可跨越各種平台 目前WPF E已演化為Microsoft Silverlight 擔負微軟在丰富互联网应用程序領域 並正面與Adobe Flash競爭的產品 目录 1 特徵 1 1 繪圖服務 1 2 佈署 1 3 互操作性 1 4 媒體播放 1 5 数据绑定 1 6 使用者介面 1 7 文件 2 工具 3 WPF E 4 WPF應用程式 5 發行歷史 6 参考資料 7 外部链接特徵 编辑WPF部份之特徵如下 繪圖服務 编辑 所有的圖形皆可由Direct3D產生 目標在於統一各種顯示圖形 Windows可以透過Direct3D來減輕在繪圖任務上的負荷 這項技術乃基於電腦顯示卡的繪圖處理單元 Graphics Processing Unit 支援向量繪圖 vector graphic 支援3D透視圖並且影響2D應用程式 佈署 编辑 WPF不僅僅是建立傳統的獨立程式 standalone applications 其部署方式可分成兩類 standalone與XAML Browser Applications XBAP 觀點 這些佈署方式在程式的撰寫上大致類似 獨立程式之安裝方式可以借由ClickOnce或微軟安裝器 MSI 完成 獨立程式可被視為完全信任 full trust 具有完全存取系統資源的優點 XAML Browser Application XBAPs 是一種寄宿於網頁瀏覽器上的程式 像是Internet Explorer 寄宿的程式可取得部份信任 partial trust 的沙箱 sandbox 環境之下 且無法取得完整的系統資源 WPF的功能亦無法完全發揮 寄宿的環境必須有意地防衛惡意的程式碼 從網頁上執行XBAP 讀音 ex bap 必須是毫無破綻的 沒有安全性或安裝提示 雖然這樣的寄宿程式在感觀上與傳統微軟的DLL out of process 有相異處 互操作性 编辑 WPF可與Win32互相操作 經由主導 hosting 機制 可以在Win32碼之下使用Windows Presentation Foundation 或是在Windows Presentation Foundation環境下使用Win32程式碼 2 Windows Forms的互操作性亦可利用ElementHost 繼承自System Windows Forms ContainerControl 以及WindowsFormsHost 繼承自System Windows Forms Integration 等類別達成 同時提供了Host Avalon Element的能力 媒體播放 编辑 WPF針對2D圖形提供形狀基元 shape primitives 內建筆刷 brushes 畫筆 pens 幾何 geometries 與變形 transforms WPF以Direct3D提供完整的3D功能 但是 WPF提供更完整的整合性在於使用者介面上 UI 文件 documents 與媒體 media 這使得儘可以實現3D UI 3D文件 和3D媒體 支援了大量的圖片格式 image formats WPF支援大量影音格式 如 WMV MPEG以及某些AVI檔 WPF支援以時間為基礎的動畫效果 不同於以影格為基礎的處理方式 如此動畫的速度與系統效能就不會有所關連 文件的呈現支援ClearType 這提供一種次像素 sub pixel 定位功能 強化其自然風格 WPF同時支援OpenType字型樣式 数据绑定 编辑 数据绑定是在应用 UI 与其显示的数据之间建立连接的过程 如果绑定具有正确的设置 并且数据提供适当的通知 则在数据更改其值时 绑定到该数据的元素会自动反映更改 数据绑定还意味着 如果元素中数据的外部表示形式发生更改 则基础数据可以自动进行更新以反映更改 例如 如果用户编辑 TextBox 元素中的值 则基础数据值会自动更新以反映该更改 数据绑定的典型用法是将服务器或本地配置数据放置到窗体或其他 UI 控件中 此概念在 WPF 中得到扩展 包括将大量属性绑定到不同类型的数据源 在 WPF 中 元素的依赖属性可以绑定到 NET 对象 包括 ADO NET 对象或与 Web 服务和 Web 属性关联的对象 和 XML 数据 数据绑定的方式一共有四种 通过 OneWay 绑定 对源属性的更改会自动更新目标属性 但对目标属性的更改不会传播回源属性 如果绑定的控件为隐式只读 则此类型的绑定适用 例如 可能会绑定到股票行情自动收录器这样的源 也可能目标属性没有用于进行更改的控件接口 例如表的数据绑定背景色 如果无需监视目标属性的更改 则使用 OneWay 绑定模式可避免 TwoWay 绑定模式的系统开销 通过 TwoWay 绑定 更改源属性或目标属性时会自动更新另一方 此类型的绑定适用于可编辑窗体或其他完全交互式 UI 方案 大多数属性默认为 OneWay 绑定 但某些依赖属性 通常为用户可编辑控件的属性 例如 TextBox Text 和 CheckBox IsChecked 默认为 TwoWay 绑定 用于确定依赖属性绑定在默认情况下是单向还是双向的编程方法是 使用 DependencyProperty GetMetadata 获取属性元数据 然后检查 FrameworkPropertyMetadata BindsTwoWayByDefault 属性的布尔值 OneWayToSource 绑定与 OneWay 绑定相反 当目标属性更改时 它会更新源属性 一个示例方案是只需要从 UI 重新计算源值的情况 OneTime 绑定未在图中显示 该绑定会使源属性初始化目标属性 但不传播后续更改 如果数据上下文发生更改 或者数据上下文中的对象发生更改 则更改不会在目标属性中反映 如果适合使用当前状态的快照或数据实际为静态数据 则此类型的绑定适合 如果你想使用源属性中的某个值来初始化目标属性 且提前不知道数据上下文 则此类型的绑定也有用 此模式实质上是 OneWay 绑定的一种简化形式 它在源值不更改的情况下提供更好的性能数据绑定在展示層並無太大負擔 WPF提供有数据模板 data templates 來控制這些数据 使用者介面 编辑 WPF提供了內建元件控制項集合 包括有按鈕 button 選單 menu 列表盒 list box 等 WPF的邏輯層與外觀展示層已形成強力的分離模式 元件的外貌樣品可以被完全改寫 文件 编辑 對OpenType的支援包括 合字 Ligatures 舊式數碼 Old style numerals for example parts of the glyph hang below the text baseline 花体字 Swash 分數形式 Fractions 上标及下标 小型大写字母工具 编辑在以往Win32應用程式發展時 絕大多數的工作都由開發人員 Developer 來處理 美術設計人員 Designer 可以涉入的相當有限 而且在Win32 API時代 要在使用者介面中實作特效的話 都需要撰寫大量的程式碼才可以做到 在WPF中 因為大多數的使用者介面元素都可以利用XAML來宣告 因此微軟試著要將Designer和Developer結合在一起 如此可以讓Designer可以充份發揮 並且Developer也不用傷腦筋在外觀設計上 微軟的Designer工具為Microsoft Expression產品集 其中的Expression Blend即為設計WPF應用程式的設計工具 它也可以用來設計Silverlight程式 開發人員仍然可以使用Visual Studio來開發WPF應用程式 在Visual Studio中內含WPF Designer可供開發人員使用 WPF E 编辑主条目 Silverlight WPF E發展初期為微軟計畫將WPF推向各平台的計畫 目前此計畫已經被發展成為Silverlight技術 WPF應用程式 编辑WPF是下一代圖形API在桌面上的延伸 以WPF撰寫應用程式 具有更高的視覺品質 下表列出微軟自家的產品或是第三協力廠商的主力產品 主条目 List of WPF applications Microsoft Visual Studio 2010 Microsoft Expression Design Microsoft Expression Blend Yahoo Messenger New York Times Reader Blu 腾讯QQ概念版 只能在Windows 7上使用 3 發行歷史 编辑系列 版本 發佈日期 重要變更 事項 一同發佈的產品3 3 0 2006年11月 3 5 2007年11月 3 5 SP1 2008年8月 4 4 0 2010年4月 4 5 2012年8月 4 5 1 2013年10月 4 52 2014年5月 4 6 2015年7月 高解析度 High Dots Per Inch HDPI 改善 觸控行為焦點 Touch 改善 程式子視窗透明 Transparent child window 支援 Visual Studio 2015参考資料 编辑 Gharighi A WPF Avalon Demo 1 CodeProject com CodeProject 2006 05 02 2013 08 22 原始内容存档于2021 07 16 WPF and Win32 Interoperation Overview 2007 04 03 原始内容存档于2008 02 06 QQ实验室 2012 06 16 原始内容存档于2022 04 18 外部链接 编辑 Net Framework 3 0官方社区 英文 The Windows Presentation Foundation community portal The WPF section of the NET Framework 3 0 community site MSDN Windows Presentation Foundation SDK 页面存档备份 存于互联网档案馆 Software Development Kit for WPF WPFwiki org 页面存档备份 存于互联网档案馆 The largest WPF FAQ question and answer repository amp Wiki Getting Started WPF 页面存档备份 存于互联网档案馆 Roadmap to information for developers new to WPF WPF SDK Blog 页面存档备份 存于互联网档案馆 Active blog maintained by the WPF SDK team Windows Presentation Foundation Unleashed The first WPF book to market written by the lead developers Adam Nathan 页面存档备份 存于互联网档案馆 Essential Windows Presentation Foundation 页面存档备份 存于互联网档案馆 An online WPF tutorial and reference written by Chris Anderson Microsoft Expression Blend 页面存档备份 存于互联网档案馆 Visual tool for creating Windows Presentation Foundation applications wpf made simple 页面存档备份 存于互联网档案馆 Provides info samples on WPF XAML net 页面存档备份 存于互联网档案馆 Information on XAML and XBAPs the Windows Presentation Foundation WPF NET Framework 3 0 and Windows Vista A Guided Tour of Windows Presentation Foundation Microsoft s overview of Windows Presentation Foundation Windows Presentation Foundation Security Sandbox An overview of the sandbox in which WPF browser applications run MSDN Forums for Windows Presentation Foundation Active discussion forum for WPF developers WPF E Google Group 页面存档备份 存于互联网档案馆 Discussion group and list of examples Microsoft goes cross platform with WPF E WPF E explained in an interview with Microsoft s Director of Developer Tools More than meets the eye in Microsoft s plans News com s article on WPF E WPF page on NetFXGuide com A Five Mile Overview of WPF A high level overview of WPF for software developers xbap org 页面存档备份 存于互联网档案馆 Comprehensive information on XBAP applications DirectX 10 Wiki Wiki covering WPF and DirectX 10 Tutorials Samples Effect News 我用43吋螢幕 各種排版錯誤 页面存档备份 存于互联网档案馆 在高解析度下 WPF的排版會錯誤 取自 https zh wikipedia org w index php title Windows Presentation Foundation amp oldid 72190370, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。