共用方式為


Windows Presentation Foundation 3.5 版的新功能

更新:2007 年 11 月

本主題簡單討論 Windows Presentation Foundation (WPF) 3.0 版和 3.5 版的主要差異。 

這個主題包含下列章節。

  • 與 3.0 版的相容性
  • 應用程式
  • 圖形
  • 立體圖形
  • 資料繫結
  • 控制項
  • 文件
  • 標註
  • 相關主題

與 3.0 版的相容性

向前和回溯相容性

使用 WPF 3.0 建置的應用程式可在 WPF 3.5 執行階段上執行。

只有當以 WPF 3.5 建置的應用程式使用 WPF 3.0 的可用功能時,您才能在 3.0 執行階段上執行該應用程式。

WPF 3.5 定義了一個新的 XML 命名空間 (Namespace ) https://schemas.microsoft.com/netfx/2007/xaml/presentation。使用 WPF 3.5 來建置應用程式時,您可以使用這個命名空間或 WPF 3.0 中定義的命名空間。

以特定執行階段為目標

使用 WPF 3.0 建置的應用程式,其目標架構可以是應用程式原始建置版本 (以上) 的任何版本。如需詳細資訊,請參閱 HOW TO:針對 .NET Framework 版本使用應用程式組態檔。 

應用程式

應用程式模型已做了下列改進:

  • 從獨立應用程式和 XAML 瀏覽器應用程式 (XBAP) 支援非視覺和視覺增益集 (Add-In) 的完整增益集支援。

  • XBAP 現在可以在 Firefox 中執行。

  • 可以在來自相同來源網站的 XBAP 和 Web 應用程式之間共用 Cookie。

  • 改善 XAMLIntelliSense 經驗以提高產能。

  • 已擴充當地語系化支援。

WPF 中的視覺和非視覺增益集

可擴充的應用程式是以可讓其他應用程式整合並擴充其功能的方式來公開 (Expose) 功能。增益集是應用程式公開擴充性的一種常見方式。在 .NET Framework 中,增益集通常是封裝成動態連結程式庫 (.dll) 的組件 (Assembly)。主應用程式 (Host Application) 會在執行階段動態載入增益集,以使用及擴充主應用程式所公開的服務。主應用程式和增益集都是透過已知的合約彼此互動,而這個已知的合約通常是由主應用程式所發行的通用介面。

只要應用程式能夠支援增益集,第一方和協力廠商程式開發人員都可以為它建立增益集。這些應用程式類型的例子很多,包括 Office、Visual Studio 和 Microsoft Windows Media Player。例如,Microsoft Windows Media Player 的增益集支援可以讓協力廠商建立 DVD 解碼器和 MP3 編碼器。

.NET Framework 會實作建置區塊 (Building Block),讓應用程式能夠支援增益集。不過,建置該項支援可能非常耗時也非常複雜,因為建全的增益集設計必須處理下列工作:

  • 探索:找到符合主應用程式所支援合約的增益集。

  • 啟動:載入增益集、執行增益集並建立與增益集的通訊。

  • 隔離:使用應用程式定義域或處理序來建立隔離界限,保護應用程式免於發生與增益集相關的可能安全性和執行問題。

  • 通訊:藉由呼叫方法和傳遞資料,讓增益集和主應用程式能跨越隔離界限彼此通訊。

  • 存留期管理:以乾淨的可預測方式載入和卸載應用程式定義域和處理序 (請參閱應用程式定義域概觀)。

  • 版本控制:確保主應用程式和增益集在建立新版本時,仍能互相通訊。

您不需要自己解決這些問題,因為 .NET Framework 現在在 System.AddIn 命名空間中包含了一組型別,統稱為「增益集模型」。.NET Framework 增益集模型提供了適用於上列各項增益集共通行為的功能。

不過,在某些案例中,您可能希望增益集能夠整合及擴充主應用程式 UI。WPF 可擴充 .NET Framework 增益集模型來啟用這項支援,其建置目標是要顯示主應用程式 UI 中增益集所擁有的 FrameworkElement。這可讓 WPF 開發人員建立應用程式來支援下列常見案例:

  • 使用協力廠商「協同」增益集提供額外服務的信差樣式應用程式。

  • 專門用來裝載協力廠商遊戲的遊戲應用程式。

  • 用來裝載廣告的內容讀取器應用程式。

  • 用來裝載任意模組的交互式 Web 應用程式 (Mashup),例如 Windows 資訊看板。

另外,獨立應用程式和 XBAP 都可以裝載 WPF 增益集。

如需詳細資訊,請參閱 Windows Presentation Foundation 增益集概觀

XBAP 的 Firefox 支援

WPF 3.5 的外掛程式使得 XBAP 可以從 Firefox 2.0 執行,而這是 WPF 3.0 中所未提供的功能。主要功能包括下列各項:

  • 如果 Firefox 2.0 是您的預設瀏覽器,XBAP 將會認可這個組態。也就是說,如果 Firefox 2.0 是預設值,XBAP 就不會使用 Internet Explorer。

  • 執行 Internet Explorer 的 XBAP 可以使用的相同安全性功能也可用於在 Firefox 2.0 中執行的 XBAP,包括部分信任安全性沙箱作業。其他由瀏覽器提供的安全性功能都是瀏覽器專屬的功能。

獨立的 WPF 應用程式和 XBAP 都可以建立、取得及刪除工作階段和持續性 (Persistent) Cookie。在 WPF 3.5 中,持續性 Cookie 可以在具有相同來源網站的 XBAP、Web 伺服器和 HTML 檔案之間共用。

如需 Cookie 的詳細資訊,請參閱 巡覽概觀

Visual Studio IntelliSense 加強功能

您現在可以使用 Visual StudioXAML 編輯器加入新的 XAML 項目、指定其名稱 (使用 Name 屬性 (Attribute))、從程式碼後置參考它,並從 IntelliSense 總管檢視其成員。

當地語系化

WPF 3.5 增加了下列指令碼的支援:

  • 孟加拉文

  • 梵文字母

  • 古吉拉特文

  • 果魯穆奇文字

  • 坎那達文

  • 馬來亞拉姆文

  • 歐利亞文

  • 坦米爾文

  • 特拉古文

如需詳細資訊,請參閱全球化 Windows Presentation Foundation

文字方塊的輸入法 (IME) 支援

FrameworkTextComposition 類別現在具有下列屬性:

當使用者使用 IME 將文字輸入 TextBox 中,而且發生 TextInputTextInputUpdateTextInputStart 事件時,FrameworkTextComposition 便會當做 TextCompositionEventArgs.TextComposition 屬性使用。

圖形

您現在能夠將透過 HTTP 下載的影像快取到本機 Microsoft Internet Explorer 暫存檔快取區 (Cache),讓影像後續要求的來源變成本機磁碟,而非網際網路。依據影像的大小,這或許可以讓網路效能大幅提升。目前已加入下列成員來支援這項功能:

新增的 BitmapSource.DecodeFailed 事件可通知您因為標頭損毀而導致影像無法載入。

立體圖形

3D 物件模型已增加下列新功能。

3D 中的輸入、焦點和事件支援

3D 物件模型現在可支援 UIElement 概念,例如輸入、焦點和事件。提供這些服務的新類別為 UIElement3D;這個類別是從 ContainerUIElement3DModelUIElement3D 衍生而來。如需範例,請參閱 UIElement3D 球體範例處理立體事件範例

3D 中的互動式 2D 內容

新類別 Viewport2DVisual3D 提供了將互動式 2D 內容放入 3D 物件的支援。如需範例,請參閱互動式 2-D 與 3-D 整合範例

新轉換服務

新類別 GeneralTransform3DGeneralTransform2DTo3DGeneralTransform3DTo2D 啟用了 Visual3D 物件間的轉換,以及 2D 和 3D 來回轉換的功能。

資料繫結

資料繫結 (Data Binding) 已做了下列改進:

  • 新的偵錯機制使資料繫結的偵錯變得更簡單。

  • 資料模型藉由提供 IDataErrorInfo 介面的支援,使您能夠對商務層進行驗證。此外,驗證模型現在也支援使用屬性語法設定驗證規則。

  • 資料繫結模型現在可支援 LINQ 和 XLINQ。

新偵錯機制

現在偵錯資料繫結的工作已變得比較簡單。您可以對繫結相關物件設定新的附加屬性 PresentationTraceSources.TraceLevel,以接收特定繫結的狀態資訊。PresentationTraceSourcesSystem.Diagnostics 命名空間中的靜態 (Static) 類別。

IDataErrorInfo 的支援

資料驗證模型現在支援 IDataErrorInfo 介面,使商務物件 (Business Object) 能夠判斷輸入的有效性。此介面定義了一個採用屬性名稱並傳回字串的索引子 (Indexer)。新增的驗證規則 DataErrorValidationRule 則會檢查此索引子所傳回的例外狀況 (Exception)。如需範例,請參閱商務層驗證範例

資料驗證的替代語法

BindingMultiBinding 類別具有兩個新屬性:ValidatesOnExceptions 和 ValidatesOnDataErrors。這兩個新屬性提供了以項目語法設定 ExceptionValidationRuleDataErrorValidationRule 的替代方式。

LINQ 和 XLINQ 支援

BindingListCollectionView 已經過改進,能夠針對型別為 BindingList<T> 的集合繫結以及 LINQ 提供更強大的支擾。透過 IEnumerableCollectionView 之資料繫結的行為也已獲得改善,而能夠在繫結至 LINQ 所產生的結果時,提供更高效能和更完善的支援。如需 LINQ 範例,請參閱 LINQ 查詢範例

此外,資料繫結模型也提供 XLINQ 的支援。

控制項

RichTextBox

RichTextBox 現在會在其儲存 TextElement 時,以及 TextElement 參與剪貼簿作業時,保留自訂 TextElement 物件。這項行為由下列新 API 支援:

RichTextBox 有一個名為 IsDocumentEnabled 的新屬性。當 IsDocumentEnabled 是 true 時,UI 項目 (例如按鈕和超連結 (Hyperlink)) 便可接受使用者輸入。

TextBoxBase

TextBoxBase 有一個名為 UndoLimit 的新屬性,用於指定控制項參考之動作數目上限。

SoundPlayerAction

SoundPlayerAction 現在可以載入可由相對和絕對 Pack 統一資源識別元 (URI) 識別的音訊檔案。

  • 資源檔:建置動作為 Resource 的音訊檔案。

  • 內容檔:建置動作為 Content 的音訊檔案。

  • 來源網站檔:建置動作為 None 的音訊檔案。

受保護的 Set 存取子

下列屬性的 set 存取子現在是受保護而非內部的存取子:

文件

FlowDocumentPageViewerFlowDocumentScrollViewerFlowDocumentReader 各有一個新的公用 (Public) 屬性,其名稱為 Selection。這個屬性會取得表示文件中選定內容的 TextSelection

標註

附註架構現在會公開針對附註與對應的標註物件進行配對的功能,並增加了新的介面 IAnchorInfo。此外,AnnotationHelper 類別也增加了 GetAnchorInfo 這個新方法,用以傳回 IAnchorInfo 物件。

這些新增功能可以處理需要存取附註物件所錨定 (Anchor) 之物件的案例。如需範例,請參閱具附註功能的文件檢視器和註解窗格範例

請參閱

工作

具附註功能的文件檢視器和註解窗格範例

概念

.NET Framework 3.5 架構

.NET Framework 3.5 版的新功能

立體圖形概觀

資料繫結概觀

附註概觀

參考

SoundPlayerAction

BitmapImage