Panel
(特に自作の)に表示したいツリーまたはメニューのようなデータ構造がありますPolarPanel
が、すべての項目は同じパネルの VisualChildren である必要があります。
を定義する場合HierarchicalDataTemplate
、 を作成しItemsControls
て として指定する必要がありますIsItemsHost
か、それともここで間違っていますか? 親の ItemsHost を何らかの方法で参照できますか?
<HierarchicalDataTemplate
DataType="{x:Type local:ItemsCollection}"
ItemsSource="{Binding Children}"
>
<!--/* "virtual" ItemsHost referencing the parent's ItemsHost? */-->
</HierarchicalDataTemplate>
(私の最初の回避策はGetAllTheChildren
、SelectedChild のすべての子とすべての子を再帰的に返すプロパティをルート ノードに配置することでした。これは ObservableCollection とは簡単に連携しませんGetAllTheChildren
。必要以上のアイテムをリロードします)。
アイテムのビューを作成して同じ親に描画することにより、コード ビハインドでそれを実行できることはわかっていますが、WPF の間接的な自動魔法の方法を探しています。
編集:私は現在、すべてItemControls / Panels
が互いの上に描画される改善された回避策を使用しています。これにより、階層的な側面が保持されるため、上記 (GetAllTheChildren を使用) よりもはるかに優れたソリューションになります。しかし、それはまだ私の質問に答えていません...
グラフィカルに表示すると、次のよう
になります。階層要素を同じスペースに配置する必要があることに注意してください。
これに対するクリーンでシンプルな解決策はありますか?