我有一个带有 Canvas ItemsPanel 的 ListBox,它显示 2 种不同类型的对象:NodeVM 和 LinkLineVM(使用 CompositeCollection)。每个 VM 对象都有一个 DataTemplate:
NodeVMs DataTemplate 有一个TextBlock
(A)
LinkLineVMs DataTemplate 有一个Line
(B) 和一个TextBlock
(C) 如何获得以下绝对 z 顺序:A(顶部)、C、B(底部)。
<ListBox>
<ListBox.Resources>
<DataTemplate DataType="{x:Type p:NodeVM}">
<StackPanel>
<TextBlock ... />
...
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type p:NetworkLinkVM}">
<Grid>
<Line ... />
<TextBlock ... />
</Grid>
</DataTemplate>
</ListBox.Resources>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" PreviewMouseUp="network_visualization_list_PreviewMouseUp" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox>
有人曾经说过一张照片值一千字。绿色矩形 == NodeVM,Line+小方框 == NetworkLinkVM。A 可以,因为链接 [-30] 通过其他链接但 B 是一个问题,因为链接 [-31] 框隐藏在链接 [-32] 下方