Windows Presentation Foundation Version 3.5 の新機能
更新 : 2007 年 11 月
ここでは、Windows Presentation Foundation (WPF) の Version 3.0 と Version 3.5 の主な違いについて簡単に説明します。
このトピックには次のセクションが含まれています。
- Version 3.0 との互換性
- アプリケーション
- グラフィックス
- 3-D グラフィックス
- データ バインディング
- コントロール
- ドキュメント
- 注釈
- 関連トピック
Version 3.0 との互換性
上位互換性と下位互換性
WPF 3.0 でビルドされたアプリケーションは、WPF 3.5 ランタイムで実行できます。
WPF 3.5 でビルドされたアプリケーションは、WPF 3.0 で使用できる機能のみを使用している場合は、3.0 ランタイムで実行できます。
WPF 3.5 では、新しい XML 名前空間 https://schemas.microsoft.com/netfx/2007/xaml/presentation が定義されています。WPF 3.5 を使用してアプリケーションをビルドする場合は、この名前空間または WPF 3.0 で定義されている名前空間を使用できます。
特定のランタイムを対象にする
WPF 3.0 でビルドされたアプリケーションは、そのアプリケーションのビルド時に対象としていたバージョン以上の任意のフレームワーク バージョンを対象とすることができます。詳細については、「方法 : アプリケーション構成ファイルを使用して対象とする .NET Framework のバージョンを指定する」を参照してください。
アプリケーション
アプリケーション モデルには、次のような機能向上が施されました。
スタンドアロン アプリケーションおよび XAML ブラウザ アプリケーション (XBAP) の非ビジュアルなアドインとビジュアルなアドインが包括的にサポートされます。
XBAP を Firefox で実行できます。
Cookie を XBAP と Web アプリケーションで同じ起点サイトから共有できます。
XAML IntelliSense の操作性の向上により、生産性が高くなります。
ローカリゼーション サポートが拡張されました。
WPF のビジュアルなアドインと非ビジュアルなアドイン
拡張可能アプリケーションは機能を公開して、他のアプリケーションがその機能を統合および拡張できるようにします。アプリケーションが機能拡張を公開するための一般的な方法として、アドインがあります。.NET Framework では、一般的に、アドインはダイナミック リンク ライブラリ (.dll) としてパッケージ化されたアセンブリです。アドインは、ホストで公開されているサービスを使用および拡張するために、実行時にホスト アプリケーションによって動的に読み込まれます。ホストとアドインは、既知のコントラクトを通じて相互にやり取りします。一般にこのコントラクトは、ホスト アプリケーションによって公開される共通インターフェイスです。
アプリケーションでアドインがサポートされると、開発元およびサードパーティの開発者はそのアプリケーションのアドインを作成できます。このようなアプリケーションの例としては、Office、Visual Studio、Microsoft Windows Media Player などがあります。たとえば、Microsoft Windows Media Player のアドイン サポートにより、サードパーティは DVD デコーダや MP3 エンコーダを作成できます。
.NET Framework は、アプリケーションがアドインをサポートできるようにするためのビルド ブロックを実装します。ただし、次の処理を行う堅牢なアドイン デザインを考慮する必要があるため、そのサポートのビルドは時間がかかり、複雑になる可能性があります。
探索 : ホスト アプリケーションによってサポートされるコントラクトに準拠しているアドインを検索します。
アクティブ化 : アドインを読み込んで実行し、アドインとの通信を確立します。
分離 : アプリケーション ドメインまたはアプリケーション プロセスを使用することで他から切り離すための境界を確立し、アドインの使用に伴うセキュリティおよび実行に関する潜在的な問題からアプリケーションを保護します。
通信 : アドインとホスト アプリケーションが分離の境界を越えて通信し、メソッドを呼び出したりデータを渡したりできるようにします。
有効期間管理 : アプリケーション ドメインとアプリケーション プロセスの読み込みおよびアンロードを、クリーンで予測可能な方法で行います (「アプリケーション ドメインの概要」を参照)。
バージョン管理 : ホスト アプリケーションとアドインのどちらかに、新バージョンが作成された後も引き続き通信できるようにします。
これらの問題を解決する必要はありません。.NET Framework には、まとめて "アドイン モデル" と呼ばれるアドインの種類のセットが用意されています。これらは System.AddIn 名前空間にあります。.NET Framework のアドイン モデルには、上記の一般的なアドイン動作それぞれの機能が用意されています。
ただし、アドインでホスト アプリケーション UI を統合および拡張できるようにすることが望ましい場合もあります。WPF は、.NET Framework のアドイン モデルを拡張してこのサポートを有効にします。そのビルドの中心となるのは、アドインが所有する FrameworkElement をホスト アプリケーションの UI で表示することです。これにより、WPF の開発者は、次の一般的なシナリオをサポートするアプリケーションを作成できます。
サードパーティの "関連" アドインで追加サービスを提供するメッセンジャー スタイルのアプリケーション
サードパーティのゲームをホストするように設計されたゲーム アプリケーション
広告をホストするコンテンツ リーダー アプリケーション
Windows サイドバーなど、任意のモジュールをホストするマッシュアップ アプリケーション
WPF アドインは、スタンドアロン アプリケーションでも XBAP でもホストできます。
詳細については、「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 でも使用できます。ブラウザに用意されている追加のセキュリティ機能は、ブラウザ固有の機能です。
Cookie
WPF スタンドアロン アプリケーションと XBAP は、セッション Cookie と永続的な Cookie の両方の作成、取得、および削除を行うことができます。WPF 3.5 では、永続的な Cookie を、同じ起点サイトを持つ XBAP、Web サーバー、および HTML ファイルで共有できます。
Cookie の詳細については、「ナビゲーションの概要」を参照してください。
Visual Studio IntelliSense の機能強化
Visual Studio XAML エディタを使用して新しい XAML 要素を追加したり、Name 属性を使用してその要素に名前を付けたりできるようになりました。また、その要素を分離コードから参照したり、IntelliSense エクスプローラから要素のメンバを表示したりできます。
ローカリゼーション
WPF 3.5 に、次のスクリプトのサポートが追加されました。
ベンガル語
デバナガリ
グジャラート語
グルムキー
カナラ語
マラヤラム語
オリヤー語
タミル語
テルグ語
詳細については、「Windows Presentation Foundation のグローバリゼーション」を参照してください。
TextBox の IME (Input Method Editor) サポート
FrameworkTextComposition クラスに、次のプロパティが追加されました。
ユーザーが IME を使用して TextBox にテキストを入力し、TextInput、TextInputUpdate、または TextInputStart イベントが発生すると、FrameworkTextComposition は TextCompositionEventArgs.TextComposition プロパティとして使用されます。
グラフィックス
HTTP を使用してダウンロードしたイメージを、ローカルの Microsoft Internet Explorer の一時ファイル キャッシュに格納できるようになりました。これにより、イメージに対する 2 回目以降の要求は、インターネットからではなくローカル ディスクから行われます。この機能により、イメージのサイズによっては、ネットワーク パフォーマンスが大幅に向上する場合があります。この機能をサポートするために、次のメンバが追加されました。
BitmapDecoder.Create(Uri, BitmapCreateOptions, BitmapCacheOption, RequestCachePolicy)
BitmapFrame.Create(Uri, BitmapCreateOptions, BitmapCacheOption, RequestCachePolicy)
BitmapSource.DecodeFailed イベントが追加されました。これにより、ヘッダーの破損が原因でイメージの読み込みに失敗したときに通知を受け取ることができます。
3-D グラフィックス
3-D オブジェクト モデルに、次の新機能が追加されました。
3-D における入力、フォーカス、およびイベント処理のサポート
3-D オブジェクト モデルで、入力、フォーカス、イベントなどの UIElement の概念がサポートされるようになりました。これらのサービスを提供する新しいクラスは、UIElement3D およびその派生クラスの ContainerUIElement3D と ModelUIElement3D です。使用例については、「UIElement3D 球のサンプル」および「3-D でのイベントの処理のサンプル」を参照してください。
3-D 上にある対話形式の 2-D コンテンツ
新しい Viewport2DVisual3D クラスは、3-D オブジェクト上に対話形式の 2-D コンテンツを配置するためのサポートを提供します。例については、「3-D 上にある対話形式の 2-D のサンプル」を参照してください。
新しい変換サービス
新しい GeneralTransform3D クラス、GeneralTransform2DTo3D クラス、および GeneralTransform3DTo2D クラスにより、Visual3D オブジェクト間の変換、2-D から 3-D への変換、および 3-D から 2-D への変換が可能になりました。
データ バインディング
データ バインディングには、次のような機能向上が施されました。
新しいデバッグ機構により、データ バインディングを簡単にデバッグできます。
データ モデルで IDataErrorInfo インターフェイスがサポートされるため、ビジネス層で検証を行うことができます。さらに、検証モデルでは、プロパティ構文を使用した検証規則の設定がサポートされるようになりました。
データ バインディング モデルで LINQ と XLINQ がサポートされるようになりました。
新しいデバッグ機構
データ バインディングをより簡単にデバッグできるようになりました。バインディング関連のオブジェクトに対して新しい PresentationTraceSources.TraceLevel 添付プロパティを設定すると、特定のバインディングのステータス情報を取得できます。PresentationTraceSources は、System.Diagnostics 名前空間にある静的クラスです。
IDataErrorInfo のサポート
データ検証モデルで、IDataErrorInfo インターフェイスがサポートされるようになりました。これにより、ビジネス オブジェクトで入力の有効性を確認できます。このインターフェイスでは、プロパティ名を受け取って文字列を返すインデクサが定義されています。また、インデクサから返された例外を確認する DataErrorValidationRule という検証規則が追加されました。例については、「ビジネス層の検証のサンプル」を参照してください。
データ検証の別の構文
Binding クラスと MultiBinding クラスに、2 つの新しいプロパティ、ValidatesOnExceptions と ValidatesOnDataErrors が追加されました。これらの 2 つのプロパティは、要素構文での ExceptionValidationRule または DataErrorValidationRule の設定に代わる方法を提供します。
LINQ と XLINQ のサポート
BindingListCollectionView の機能向上により、BindingList<T> 型のコレクションへのバインディングおよび LINQ のサポートが向上しました。IEnumerable 上で CollectionView を使用したデータ バインディングの動作も改良されたため、LINQ で生成された結果にバインディングするためのパフォーマンスとサポートが向上しました。LINQ の例については、「LINQ クエリのサンプル」を参照してください。
さらに、データ バインディング モデルでは XLINQ もサポートされます。
コントロール
RichTextBox
RichTextBox は、TextElement を保存するとき、および TextElement がクリップボード操作に参加するときに、カスタム TextElement オブジェクトを保存するようになりました。この動作は、次の新しい API でサポートされます。
TextRange クラスに、新しい Save(Stream, String, Boolean) オーバーロードが追加されました。このオーバーロードは、カスタム TextElement オブジェクトを保存するかどうかを指定するブール値を受け入れます。
TextElementEditingBehaviorAttribute クラスを使用して、カスタム TextElement の動作を指定できます。TextElementEditingBehaviorAttribute.IsMergeable プロパティと TextElementEditingBehaviorAttribute.IsTypographicOnly プロパティを false に設定すると、ユーザーが RichTextBox のコンテンツを編集するときに、RichTextBox によりカスタム TextElement の境界とコンテンツが保存されます。
RichTextBox に、IsDocumentEnabled という新しいプロパティが追加されました。IsDocumentEnabled が true の場合、ボタンやハイパーリンクなどの UI 要素はユーザー入力を受け入れます。
TextBoxBase
TextBoxBase に、UndoLimit という新しいプロパティが追加されました。このプロパティでは、コントロールが参照するアクションの最大数を指定します。
SoundPlayerAction
SoundPlayerAction は、相対パッケージの 統一リソース識別子 (URI) でも絶対パッケージの URI でも指定できるオーディオ ファイルを読み込むことができるようになりました。
リソース ファイル : ビルド アクションが Resource であるオーディオ ファイル。
コンテンツ ファイル : ビルド アクションが Content であるオーディオ ファイル。
起点サイト ファイル : ビルド アクションが None であるオーディオ ファイル。
protected set アクセサ
次のプロパティの set アクセサが internal ではなく protected になりました。
ドキュメント
FlowDocumentPageViewer、FlowDocumentScrollViewer、および FlowDocumentReader のそれぞれに、Selection という新しいパブリック プロパティが追加されました。このプロパティは、ドキュメント内の選択されているコンテンツを表す TextSelection を取得します。
注釈
Annotations Framework は、注釈と、それに応じた注釈先オブジェクトとを対応付ける機能を公開するようになりました。また、IAnchorInfo という新しいインターフェイスが追加されました。さらに、IAnchorInfo オブジェクトを返す GetAnchorInfo という新しいメソッドが AnnotationHelper クラスに追加されました。
これらの新しい追加機能により、注釈オブジェクトのアンカー先オブジェクトにアクセスする必要があるシナリオに対応できます。例については、「コメント ペインを持つ注釈付きドキュメント ビューアのサンプル」を参照してください。
参照
処理手順
コメント ペインを持つ注釈付きドキュメント ビューアのサンプル
概念
.NET Framework Version 3.5 の新機能