WPF Version 4 の新機能
このトピックでは、Windows Presentation Foundation (WPF) Version 4 の新機能および拡張機能について説明します。
このトピックは、次のセクションで構成されています。
新しいコントロール
表示状態マネージャー
タッチと操作
グラフィックスとアニメーション
テキスト
バインディング
XAML ブラウザー アプリケーション
WPF および Windows
WPF および Silverlight デザイナー
新しいコントロール
ビジネス アプリケーションの作成を簡略化できるようにするため、WPF に 3 つの新しいコントロールが追加されました。 これらのコントロールは、Silverlight バージョンとほぼ完全な互換性があります。 そのため、開発者はコードを再利用して、クライアントと Web のバージョンをすばやく作成できます。
表示状態マネージャー
WPF には、ControlTemplate での視覚的な状態変化に対し、優れたサポートが用意されています。VisualStateManager クラスおよびサポート クラスが追加されているので、Microsoft Expression Blend などのツールを使用して、視覚的な状態に応じてコントロールの外観を定義できます。 たとえば、Button コントロールが Pressed の状態になったときの外観を定義できます。 既存のコントロールに対し、VisualStateManager を使用する ControlTemplate を作成する方法の詳細については、「ControlTemplate の作成による既存のコントロールの外観のカスタマイズ」を参照してください。 VisualStateManager を使用する新しいコントロールの作成方法については、「外観をカスタマイズできるコントロールの作成」を参照してください。
メモ |
---|
要素で GoToElementState メソッドを使用すると、ControlTemplate の外で VisualStateManager を利用することができます。 |
タッチと操作
WPF の要素ではタッチ入力ができます。 UIElement クラス、UIElement3D クラス、および ContentElement クラスは、タッチ入力が有効な画面で要素をタッチしたときに発生するイベントを公開します。タッチ イベントに加え、UIElement は操作をサポートします。 操作は、UIElement の拡大縮小、回転、または変換に解釈されます。 たとえば、写真を表示するアプリケーションでは、写真上のコンピューター画面をタッチすることで、その写真の移動、ズーム、サイズ変更および回転を操作できます。 タッチ入力の詳細については、「チュートリアル: 初めてのタッチ アプリケーションの作成」および「入力の概要」を参照してください。
グラフィックスとアニメーション
グラフィックスとアニメーションに関するいくつかの変更点があります。
レイアウトの丸め
オブジェクトの一方の端が 1 つのピクセル デバイスに位置する場合、DPI に依存しないグラフィック システムでは、不鮮明な表示 (半透明のエッジ) などのレンダリング アイテムを作成できます。 以前のバージョンの WPF には、このような場合の処理に役立つピクセル スナップが含まれています。 Silverlight 2 では、レイアウトの丸めが導入されたことで、端がピクセル境界全体に位置するように、要素を移動する別の方法が利用できます。 WPF では今回、FrameworkElement にアタッチされた UseLayoutRounding プロパティで、レイアウトの丸めがサポートされました。
キャッシュ済みコンポジション
新しい BitmapCache クラスと BitmapCacheBrush クラスを使用すると、ビジュアル ツリーの複雑な部分をビットマップとしてキャッシュすることで、描画時間を大幅に短縮できます。 このビットマップに対しては、マウス クリックなどのユーザー入力ができるため、その他の要素上にブラシのように描画することができます。
Pixel Shader 3 のサポート
WPF 4 は、WPF 3.5 SP1 で導入された ShaderEffect のサポートを基に、アプリケーションで Pixel Shader (PS) Version 3.0 を使用したエフェクトを記述できるようにします。 PS 3.0 のシェーダー モデルは、サポートされているハードウェア上でより多くのエフェクトを使用できるという点で、PS 2.0 より洗練されています。
イージング関数
イージング関数を使用すると、アニメーションの動きを詳細に制御できるため、アニメーションが魅力的になります。 たとえば、ElasticEase をアニメーションに適用すると、アニメーションに弾むような動作を加えることができます。 イージングの種類の詳細については、System.Windows.Media.Animation 名前空間のドキュメントを参照してください。
テキスト
テキストに関するいくつかの変更点があります。
新しいテキスト レンダリング スタック
WPF テキストのレンダリング スタックは一新されました。 この変更により、テキスト レンダリングの設定性能、わかりやすさ、各国対応言語のサポートが向上しています。 新しいテキスト スタックでは、エイリアス化されたモード、グレースケール モード、ClearType モードなどのレンダリング モードを明示的に選択できるようになりました。 今回は、表示が最適化された文字レイアウトがサポートされているため、Win32/GDI テキストに匹敵する鮮明なテキストを生成することができます。 新しいテキスト スタックでは、アニメーション テキストまたは静的テキストをヒンティングおよび固定する際にテキストが最適化されます。 また、ビットマップが埋め込まれているフォントもサポートしており、小さいフォント サイズにも代用できます。これにより、多くの東アジア フォントを Win32/GDI テキストに匹敵する鮮明度で描画できます。
選択項目とキャレットのカスタマイズ
TextBox、RichTextBox、FlowDocumentReader などのコントロールの入力および読み取りで、選択項目とキャレットを描画するブラシを指定できます。 TextBoxBase には 2 つの新しいプロパティがあります。
SelectionBrush では、選択されたテキストを強調表示するためのブラシを作成できます。
CaretBrush では、カーソルを描画するブラシを変更できます。
バインディング
バインディングに関して、さまざまな変更と拡張機能が加えられています。
InputBinding におけるコマンドのバインド。
コードで定義されているインスタンスに対し、InputBinding クラスの Command プロパティをバインドできます。 次のプロパティは、依存関係プロパティであるため、バインディングの対象にできます。
InputBinding クラス、MouseBinding クラスおよび KeyBinding クラスでは、所有する FrameworkElement からデータ コンテキストを受け取ります。
動的オブジェクトへのバインド
WPF は、IDynamicMetaObjectProvider を実装するオブジェクトへのデータ バインディングをサポートします。 たとえば、DynamicObject から継承する動的オブジェクトをコードで作成する場合、マークアップ拡張機能を使用して XAML のオブジェクトにバインドできます。 詳細については、「バインディング ソースの概要」を参照してください。
バインドできるテキストの実行
Run.Text は、依存関係プロパティです。 主な利点は一方向のバインディングをサポートできるようになったことです。 また、依存関係プロパティの他の機能 (スタイルとテンプレート) もサポートしています。
XAML ブラウザー アプリケーション
XAML browser applications (XBAPs) には 2 つの機能が追加されました。
HTML-XBAP スクリプトの相互運用
アプリケーションが HTML フレームでホストされている場合に、XBAP を含む Web ページと通信できるようになりました。 XBAP は HTML DOM と緊密にアクセスすることで、DOM イベントを処理できます。 詳細については、「BrowserInteropHelper.HostScript」を参照してください。
完全信頼の XBAP 配置
イントラネットまたはブラウザーが信頼しているサイトからアプリケーションをインストールしているときに、XBAP で完全な信頼が必要となる場合は、標準的な ClickOnce アクセス許可昇格のプロンプトが表示されるようになりました。
これら両方の機能の詳細については、「WPF XAML ブラウザー アプリケーションの概要」を参照してください。
WPF および Windows
Windows 7 のタスク バーでは機能が強化されており、タスク バー ボタンを使用して状態をユーザーに伝え、共通のタスクを公開することができます。 System.Windows.Shell 名前空間の新しい型では、Windows 7 タスク バーの機能に対するマネージ ラッパーが用意されており、Windows シェルに渡されるデータを管理することができます。 たとえば、JumpList 型ではジャンプ リストを処理することができ、TaskbarItemInfo 型ではタスク バー サムネイルを処理することができます。
Windows 7 および Windows Vista の WPF ダイアログ ボックスでは、カスタム プレースを含む Windows 7 および Windows Vista スタイルの外観と操作性がサポートされています。 詳細については、FileDialogCustomPlace クラスを参照してください。
WPF および Silverlight デザイナー
Visual Studio 2010 では、WPF アプリケーションまたは Silverlight アプリケーションの作成を支援するため、さまざまなデザイナーの機能強化が施されています。
Silverlight のサポートの強化
Visual Studio 2008 では、Silverlight Tools をインストールして、Visual Studio で Silverlight アプリケーションを作成できました。 ただし、Silverlight プロジェクトでサポートされるデザイナーの機能は限られていました。 Visual Studio 2010 では、Silverlight プロジェクトと WPF プロジェクトでサポートされるデザイナーの機能は同じです。 たとえば、Silverlight プロジェクトで、マウスを使用してデザイン サーフェイス上の項目の選択や配置ができるようになりました。
複数のプラットフォームのバージョンをサポート
Visual Studio 2008 では、コントロールのデザイン時の対象は、最新バージョンの WPF プラットフォームだけでした。 Visual Studio 2010 では、このサポートが WPF 3.5、WPF 4.0、Silverlight 3、Silverlight 4、今後リリースされるプラットフォームなどの、複数のプラットフォームでのデザイン時サポートに拡張されました。 これらすべてのプラットフォームで同じ機能拡張 API が存在するため、コントロールのデザイン時設計者は、1 つのエクスペリエンスを作成し、各プラットフォームのコントロールのランタイム間で共有することができます。
視覚的なデータ バインディング
新しいデータ バインディング ビルダーにより、構造を視覚的に表示して、XAML で入力しなくてもバインディングを編集することができます。
自動レイアウト
レイアウト機能が向上しているのは、直感的な Grid デザイナー、およびユーザー コントロールの自動サイズ変更のサポートです。
プロパティ編集機能の向上
プロパティ ウィンドウでは、Brush リソースを視覚的に作成および編集できるようになりました。
詳細については、「WPF デザイナー」を参照してください。