I am looking for a way to make my TreeView
display items in Canvas
panel.
<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>
This solution allows me to move around Root TreeViewItem
, but I want every single item in TreeView
to respect Canvas
attached properties. What I mean is, when Root {Left = 50, Top = 10} (to here it works) contains Alpha {Left = 0, Top=0}, Root would be at [50,10] and Alpha at [0,0] (coordinates are absolute to Canvas
).
The reason why only Root TreeViewItem
places itself correctly is, that I use TreeView.ItemsPanel
. I have a feeling I should use TreeView.ItemContainerStyle
instead, but I really don't know how.
Any help is appreciated of course, preferably incorporating HierarchicalDataTemplate
too so _I know how to connect the solution with Binding
.