整合性は開発者やエンド ユーザのために生産性向上の鍵となるものです。Infragistics プレゼンテーション層フレームワーク(PLF)は、比類なき整合性をすべての Infragistics エレメントが構築される基盤として提供します。開発者にとってこれは、特別な設定をすることなく単一のプロパティで、XP のテーマや Office のルック アンド フィールを獲得できることを意味します。すなわち、当社のグリッド コントロールを使えば、同じアーキテクチャ上ですべてが構築されているエディタ コントロールによってあらゆるデータ型を編集できるということです。また、当社の受賞したフレームワーク上にユーザ独自のカスタム コントロールを構築することや、当社のインフラを活用してユーザのコントロールが XP のテーマや Office のスタイルをサポートすることが可能になり、ヒットテスト、描画、透明性、グラデーション、イベント発生などのために当社のロジックを活用できます。以下の図は、Ultimate UI for Windows Forms のコントロールが PLF の共通コンポーネントを利用する方法を示しています。
Infragistics Windows Forms コントロールおよびコンポーネントは、以下の PLF コンポーネントを使用します。
UIElements - コントロールの個別のパーツを表します。各エレメントにはひとつ以上の子エレメントを含めることができます。この抽象化は PLF の中核を成します。他の概念や抽象化の多くにこの抽象化が組み込まれています。
Appearance オブジェクト - エレメントの外観に影響するプロパティを提供します。
キーボード処理 - アプリケーション開発者が容易にカスタマイズできる、表形式によるキーボード動作の定義ロジックを提供します。
マウス処理 - MouseEnterElement イベントと MouseLeaveElement イベントによって、アプリケーション開発者は詳細なマウス通知を得ることができます。
イベント マネージャ - Infragistics コンポーネントの多くが、イベントの発生を一時的に無効にするためのイベント マネージャを公開します。
選択方式 - 選択方式が 1 組のインタフェースに抽象化されており、PLF によって供給される 1 組の選択方式クラスに選択ロジックが実装されています。これらの選択方式は PLF ベースの任意のコントロールで使用できます。
プロパティ変更通知(完全なコンテキスト情報を含む) - 詳細情報を失うことなく、変更情報がオブジェクト階層の上位に伝達されます。
フィルター - 強力なフィルタ セットにより、市販されている他のどのコントロールも備えていない、非常に柔軟な拡張メカニズムを提供します。
組み込みエディタ - PLF バージョン 2 では埋め込みエディタの概念が導入されました。この抽象化により、エディタを別のコントロールのエレメントに密接に統合できます。たとえば、UltraWinGrid におけるセル データの表示や編集に使用されています。
アセンブリ リソース文字列のカスタマイズ - アプリケーション開発者は、Windows Forms コンポーネントを通じてエンド ユーザに表示されるあらゆる文字列リソースを簡単に置き換えることができます。
PLF アーキテクチャには次のような利点があります。
安定性と堅牢性 - UI ロジックの大部分が、十分なテストと保守がなされた共通のコードとして共有されています。
整合性 - あるひとつのコンポーネントの使用方法を視覚的およびプログラミング的に習得すれば、その方法を他のすべてのコンポーネントで利用できます。ユーザが開発したコントロールでも利用可能です。
拡張性 - .NET により、開発者は任意のパブリック コンポーネント クラスから独自のクラスを派生できます。パブリック コンポーネント クラスは完全に公開されており、独自の動作を提供するようにメソッドをオーバーライドできます。ただし、オーバーライドが必ずしも実用的であるとは限りません。たとえば、グリッド内の 1 個のセルの描画をオーバーライドしなければならない場合に、グリッドの OnPaint メソッドをオーバーライドすることもできますが、比較的簡単な UI 拡張機能を実現する方法としては、これはかなり複雑になる可能性があります。そのため、PLF では、視覚と動作に関する使いやすい詳細な拡張メカニズムが公開されています。
共通アセンブリ セットの共有 - コントロール間で大部分の動作が共通になっており、すべてのコントロールで共有できる 1 組の共通アセンブリに抽象化されています。これにより、整合性と堅牢性が向上するだけでなく、個々のコンポーネントのサイズも小さくなります。