在你告诉我这个问题已经回答之前,请允许我解释一下。我已经阅读了很多关于此的答案,但没有一个(我已经读过)解决了我的问题。
我的项目是一个WPF项目,它在Visual Studio 2010中使用C#,XAML和MVVM Light。
我拥有的是ListBox。 ListBox的每个元素都是一个画布(而不是默认的StackPanel)。每个画布都包含一个节点' - 基本上是一个附加了样式的Thumb控件和一个Path控件。 Path在视图模型中的节点列表上使用MultiBinding来生成节点之间的某些行。当您拖动一个节点(使用DragDelta)时,线条会更新。
视觉效果可能有所帮助:
如您所见,有些线在节点之上,有些在下面。通常情况下,来自节点的行似乎低于该节点,但我想要的是所有行都在所有节点之下。
我认为ListBox的ItemTemplate是主要内容:
<ListBox.ItemTemplate>
<DataTemplate>
<Canvas>
<Path Stroke="Black" Canvas.ZIndex="1">
<Path.Data>
<MultiBinding Converter="{StaticResource NodeToPathDataConverter}">
<Binding Path="NodeListViewModel.NodeList" Source="{StaticResource Locator}" />
<Binding />
</MultiBinding>
</Path.Data>
</Path>
<Thumb Name="myThumb" Template="{StaticResource NodeVisualTemplate}" Canvas.ZIndex="2">
<i:Interaction.Triggers>
<i:EventTrigger EventName="DragDelta">
<cmd:EventToCommand Command="{Binding NodeListViewModel.DragDeltaCommand, Source={StaticResource Locator}}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Thumb>
</Canvas>
</DataTemplate>
</ListBox.ItemTemplate>
正如您所看到的,我尝试在控件中使用Canvas.ZIndex,但这似乎只是将z序设置为彼此,与其他节点无关和/或线。
有没有办法告诉我们将所有节点放在所有路径之上?感谢。