我正在寻找一种在面板中制作我的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
.