ItemsControl を継承するコントロールを作成しましたが、作成したコントロールには、そのテンプレートの ItemsPresenter がありません。代わりに、グリッドがあります。次のようなリストを作りたいです。
(項目1)
(グリッドスプリッター)
(項目 2)
(グリッドスプリッター)
(項目3)
アイテム間に独自の GridSplitter を挿入する必要があるため、ItemsPresenter を使用して UI に入力させることはできません。
OnItemsChanged() メソッドをオーバーライドして、GridSplitter を追加/削除するロジックを記述できるようにします。ただし、ItemContainerGenerator クラスを使用して、Items の ItemTemplate を生成する必要があります。
しかし、コントロール テンプレートに ItemsPresenter がない場合、ItemContainerGenerator は機能していないようです。初めてアイテムを生成するために使用すると、DataTemplate を含む ContentPresenter が返されます。次に、私が持っているグリッドに挿入しました。ただし、画面にはアイテムが表示されません。別のアイテムを追加すると、グリッドに挿入するときにエラーがスローされ、そのアイテムが既にビジュアル ツリーにあるというメッセージが表示されます。それが、ItemContainerGenerator が ItemsPresenter なしでは機能しないと私が考える理由です。
そこで、Grid を ItemsPresenter に置き換えようとしました。今回は、下線ロジックを使用してアイテムを作成し、想定どおりに表示しました。しかし、それは私が望むものではありません。
ItemContainerGenerator を使用する理由は、Xaml で定義した ItemTemplate から UI 要素を作成する必要があるためです。
項目のコントロールの ItemTemplate を使用して UI を生成する方法はありますか?