DataPresenter アーキテクチャは、階層データ、異種データ、フリーフォームのデータ構造 (ツリー) の使用と表示をサポートします。異種データは異なるタイプのレコードを含むデータ ソースのことです。これは異なる FieldLayout を各 DataRecord に割り当てる xamDataPresenter™ の能力に基づいてサポートされます。
IsNestedDataDisplayEnabled プロパティが False に設定されない限り、階層データは自動的にサポートされます。デフォルトで、System.Collections.IEnumerable
インターフェイスを実装する DataType を持つ文字列以外のフィールドは「展開可能」としてマークされます。Field
の IsExpandable プロパティを設定することによってこれを明示的に変更できます。
Field が展開可能としてマークされると、 CellValuePresenters は、UI 内のフィールドを表すために作成されません。代わりに、 ExpandableFieldRecord が作成され、各 DataRecord
の ChildRecords コレクションに追加されます。DataRecord
のように ExpandableFieldRecord
は UIElement™ ではなく、軽量なオブジェクトです。対応する ExpandableFieldRecordPresenter によって UI で表されます (詳細は、 パフォーマンス最適化の概要を参照してください)。
関連付けられた Field
の DataType
が IEnumerable
インターフェイスを実装する場合、 ChildRecordManager は子 DataRecords を作成および管理するために初期化されます。この場合、ExpandableFieldRecord
が展開されると、ExpandableFieldRecordPresenter
の NestedContent には、子 DataRecordPresenters
を含む RecordListControl が含まれます。そうでない場合には、NestedContent
には実際のセル値を持つ ExpandedCellPresenter が含まれます。
Views ごとにサポートする階層データは異なります。したがって、 RecordPresenter 派生のクラス (DataRecordPresenter、 GroupByRecordPresenter、および ExpandableFieldRecordPresenter) は、ビューに基づいて視覚的なツリーを変えるために、 TemplateGridView プロパティと TemplateCardView プロパティを公開します。
さまざまなビューによる階層データを処理する方法:
グリッド ビューは、IsExpanded 状態を切り替えるために使用される展開インジケーターを RecordPresenter の UI で表示します。この展開インジケーターをクリックすると、レコード コンテンツの下にネストされる子レコードを表示します。
ツリー ビューが特別なツリー フィールドと階層データを表示します。これは、コントロールにバインドされた階層データのツリー表現を含むフィールドです。ツリー フィールドに描画される指定された展開インジケーターを使用してネストされたレコードを展開および縮小し、そのレベル全体をブラウズできます。
カルーセル ビューで兄弟レコードのみを表示します。ただし、ドリルダウン パスを視覚化し、ナビゲートするためのブレッドクラムで階層データがサポートされます。
カード ビューは兄弟レコードのみを表示し、階層データをサポートしません。