TreeView から継承し、項目コンテナーとして TreeViewItems を使用するカスタム PropertyGrid コントロールのさまざまなテーマを作成しようとしています。さらに、TreeViewItem がバインドされているオブジェクトの種類に基づいて、TreeViewItem のコントロール テンプレートを設定したいと考えています。ItemsSource を設定して、現在のように PropertyGrid を設定したいと思います。
現在、HierarchialDataTemplate を介して TreeViewItems.ItemContainerStyleSelector を設定することにより、バインドされたオブジェクトのタイプに基づいてさまざまなコントロール テンプレートを適用しています。このスタイル セレクターでは、リソース キーを介して静的リソースを返しています。このセレクターとリソース キー メソッドを使用するのではなく、バインド先のオブジェクトの型に基づいて異なる派生 TreeViewItem オブジェクトを作成したいと考えています。これにより、他のコントロールのテーマと同じように、タイプに基づいてテーマごとに異なるスタイルを適用できます。しかし、これを行う方法がわかりません。オーバーライド ItemsControl.GetContainerForItemOverride は、バインドされるオブジェクト、または少なくともその型が渡された場合に、私が望むことを行いますが、これを機能させる方法がわかりません。これを行う方法についてのアイデアはありますか?それとも、私は彼のことをすべて間違っているのでしょうか?