Я ищу способ отображения элементов TreeView
на панели Canvas
.
<TreeView>
<TreeView.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True"/>
</ItemsPanelTemplate>
</TreeView.ItemsPanel>
<TreeViewItem Header="Root" IsExpanded="True" Canvas.Left="50" Canvas.Top="20">
<TreeViewItem Header="Alpha" Canvas.Left="10" Canvas.Top="50">
<TreeViewItem Header="Sub"/>
</TreeViewItem>
<TreeViewItem Header="Beta"/>
<TreeViewItem Header="Gamma"/>
</TreeViewItem>
</TreeView>
Это решение позволяет мне перемещаться по Root TreeViewItem
, но я хочу, чтобы каждый элемент в TreeView
соблюдал Canvas
прикрепленных свойств. Я имею в виду, что когда Root {Left = 50, Top = 10} (здесь это работает) содержит Alpha {Left = 0, Top = 0}, Root будет в [50,10] и Alpha в [0,0 ] (абсолютные координаты Canvas
).
Причина, по которой только Root TreeViewItem
размещается правильно, заключается в том, что я использую TreeView.ItemsPanel
. У меня есть чувство, что я должен использовать TreeView.ItemContainerStyle
вместо этого, но я действительно не знаю, как.
Конечно, приветствуется любая помощь, желательно с включением HierarchicalDataTemplate
, поэтому _ я знаю, как связать решение с Binding
.