Я ищу способ сделать свои TreeView
элементы отображения в панели Canvas
.Создание TreeView.ItemsPanel a 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>
Это решение позволяет мне двигаться вокруг корня TreeViewItem
, но я хочу, чтобы каждый отдельный элемент в TreeView
уважать Canvas
присоединенные свойства. Я имею в виду, когда Root {Left = 50, Top = 10} (здесь он работает) содержит Alpha {Left = 0, Top = 0}, Root будет в [50,10] и Alpha at [0,0 ] (координаты абсолютны до Canvas
).
Причина, по которой только корень TreeViewItem
правильно устанавливает, что я использую TreeView.ItemsPanel
. У меня есть чувство, что я должен использовать TreeView.ItemContainerStyle
, но я действительно не знаю, как это сделать.
Любая помощь, конечно, приветствуется, предпочтительно, включая HierarchicalDataTemplate
. _I знаю, как подключить решение с помощью Binding
.
Есть ли какая-то особая причина, по которой вы используете 'TreeView' вместо' ItemsControl'? – Rachel
Да, я хочу использовать 'HierarchicalDataTemplate' и из того, что я нашел в Интернете, он работает только с TreeView. Но я с удовольствием поеду с 'ItemsControl', если есть способ сделать эту работу с ним. –
Являются ли объекты данных в вашем TreeView одинаковыми? Если они есть, вы можете использовать неявный 'DataTemplate' вместо' HierarchicalDataTemplate'. – Rachel