W
indows
P
resentation
F
oundation
(
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
競爭的?品。
特徵
[
??
]
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
[
??
]
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
|
?考資料
[
??
]
外部?接
[
??
]
|
---|
| ??
| |
---|
| 架構
| |
---|
| 共同語言基礎架構
| |
---|
| CLI支持語言
| |
---|
| Core家族
3
| |
---|
| 元件
| |
---|
| 比較
| |
---|
| ?將推出
| |
---|
| |
|