Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

WPFの機能

サポートする機能

グラフィック

メディア

コントロール

レイアウト

パネルと呼ばれるレイアウト用コントロールを使用して、Windowsフォームのような座標レイアウト、HTMLのようなフロー レイアウト(ブロック化、格子分割)にも対応する。

アニメーション

イベント トリガ、トリガ アクション、ストーリ ボードを定義することで、UIコントロールなどの表示項目にタイムライン ベースのアニメーションの効果を付加できる。

デプロイ

ClickOnceXBAPなどのデプロイが可能。

相互運用性

P/InvokeやRCW呼出しなどWin32連携技術を使用した相互運用が可能である。また、WindowsFormsHost?、Hwndhost を使用することで、WindowsフォームやActiveXのUIコントロールを使用することも可能である(パフォーマンス的には不利)。

例えば、下記は、System.Windows.Forms名前空間のDataGrid?コントロールをホストするWPFの例である。

<Window x:Class="WpfApplication1.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"  
  Title="HostingWfInWpf" Height="150" Width="300" Loaded="Window_Loaded">
  <Canvas>
    <WindowsFormsHost Name="windowsFormsHost1" Height="100" Width="275">
      <wf:DataGrid x:Name="dataGrid1"/>
    </WindowsFormsHost>
  </Canvas>
</Window>

機能の制限事項

主に3Dグラフィックの高度な機能に関する制限であるので、リッチでインタラクティブな業務アプリケーションの開発に、大きな支障はないと言える。

注意事項

WPFアーキテクチャ

クラス階層

System.Object

System.Object

http://msdn.microsoft.com/ja-jp/library/system.object.aspx

WPFのプログラミング モデルを提供するフレームワークは、CLR上のマネージ コンポーネント(PresentationFramework?.dll、PresentationCore?.dll)として公開される。System.Objectは、マネージ コンポーネントが提供する全てのマネージ クラスの基本クラスであり、型階層のルートである。

マネージ コンポーネントには、開発の生産性と信頼性を高める多数の機能(メモリ管理、エラー処理、共通型システムなど)が用意されているが、性能など犠牲となるものもある。これに対し、アンマネージ コンポーネント(milcore.dll)はDirectXとの緊密な統合の実現(ハードウェア レンダリングおよびソフトウェア レンダリングの効率性を考え、WPF での表示はすべて DirectX エンジンによって実行されるようになっている。)、メモリ・実行の詳細な制御の要件による。

System.Threading.DispatcherObject?

http://msdn.microsoft.com/ja-jp/library/system.windows.threading.dispatcherobject.aspx

DispatcherObject?は、派生したCLRオブジェクトに、STAオブジェクトとしての動作を実装する基本抽象クラスである。

通常、WPFアプリケーションは、

の2つのスレッドを使用して実行される。

「レンダリング スレッド」は、「UIスレッド」がユーザ入力を受け取り、イベント処理・UI処理をしている間に、バック グラウンドで実行される。このため、ほとんどのWPFアプリケーションは、単一の「UIスレッド」で済むが、状況によっては、応答性を高める目的でバック グラウンド スレッドを使用する場合もある。WPFでは、バック グラウンド処理の実装を支援するDispatcherObject?を使用できる。

DispatcherObject?.Invoke、BeginInvoke?メソッドを使用することにより、バック グラウンド処理からの「UI変更処理」(= UI要素の操作処理)が、容易に実装可能となる。

これらのメソッドは、内部的には

これにより、

System.Windows.DependencyObject?

System.Windows.Media.Visual

System.Windows.UIElement

System.Windows.FrameworkElement?

System.Windows.Controls.Control

System.Windows.Controls.ContentControl?

System.Windows.Controls.ItemsControl?

要素ツリー

WPFプロパティ システム

データ バインディング

ルーティング イベント

WPFのコントロール

標準コントロール

ユーザ コントロール


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS