バージョン

階層、異種、およびフリーフォームのデータ構造

DataPresenter アーキテクチャは、階層データ、異種データ、フリーフォームのデータ構造 (ツリー) の使用と表示をサポートします。異種データは異なるタイプのレコードを含むデータ ソースのことです。これは異なる FieldLayout を各 DataRecord に割り当てる xamDataPresenter™ の能力に基づいてサポートされます。

Note

注: コントロールでの複数の FieldLayout サポートに関しては現在制限があります。GroupByArea は単一の FieldLayout からフィールドしか表示できません: これは DefaultFieldLayout です。したがって、グループ化は DefaultFieldLayout のみに対してサポートされます。

IsNestedDataDisplayEnabled プロパティが False に設定されない限り、階層データは自動的にサポートされます。デフォルトで、System.Collections.IEnumerable インターフェイスを実装する DataType を持つ文字列以外のフィールドは「展開可能」としてマークされます。FieldIsExpandable プロパティを設定することによってこれを明示的に変更できます。

Field が展開可能としてマークされると、 CellValuePresenters は、UI 内のフィールドを表すために作成されません。代わりに、 ExpandableFieldRecord が作成され、各 DataRecordChildRecords コレクションに追加されます。DataRecord のように ExpandableFieldRecord は UIElement™ ではなく、軽量なオブジェクトです。対応する ExpandableFieldRecordPresenter によって UI で表されます (詳細は、 パフォーマンス最適化の概要を参照してください)。

関連付けられた FieldDataTypeIEnumerable インターフェイスを実装する場合、 ChildRecordManager は子 DataRecords を作成および管理するために初期化されます。この場合、ExpandableFieldRecord が展開されると、ExpandableFieldRecordPresenterNestedContent には、子 DataRecordPresenters を含む RecordListControl が含まれます。そうでない場合には、NestedContent には実際のセル値を持つ ExpandedCellPresenter が含まれます。

Note

注: FieldSettings オブジェクトは、ExpandableFieldRecordPresenters の動作を決定する、 ExpandableFieldRecordExpansionModeExpandableFieldRecordHeaderDisplayMode という 2 つの追加プロパティを公開します。これらの 2 つのプロパティは、 グリッド ビューのみに適用できます。

Views ごとにサポートする階層データは異なります。したがって、 RecordPresenter 派生のクラス (DataRecordPresenterGroupByRecordPresenter、および ExpandableFieldRecordPresenter) は、ビューに基づいて視覚的なツリーを変えるために、 TemplateGridView プロパティと TemplateCardView プロパティを公開します。

さまざまなビューによる階層データを処理する方法:

  • グリッド ビューは、IsExpanded 状態を切り替えるために使用される展開インジケーターを RecordPresenter の UI で表示します。この展開インジケーターをクリックすると、レコード コンテンツの下にネストされる子レコードを表示します。

  • ツリー ビューが特別なツリー フィールドと階層データを表示します。これは、コントロールにバインドされた階層データのツリー表現を含むフィールドです。ツリー フィールドに描画される指定された展開インジケーターを使用してネストされたレコードを展開および縮小し、そのレベル全体をブラウズできます。

  • カルーセル ビューで兄弟レコードのみを表示します。ただし、ドリルダウン パスを視覚化し、ナビゲートするためのブレッドクラムで階層データがサポートされます。

  • カード ビューは兄弟レコードのみを表示し、階層データをサポートしません。