Установите индекс ZIndex в ListBox.ItemContainerStyle
вместо вашего DataTemplate.
Причина этого в том, что все элементы обернуты в ListBoxItem
, поэтому вам нужно установить ZIndex на ListBoxItem
вместо DataTemplate
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Canvas.ZIndex"
Value="{Binding Converter={StaticResource GetObjectZIndexConverter}}" />
</Style>
Вам понадобится конвертер, который проверяет typeof
ваш объект с привязкой к данным и возвращает правильный ZIndex на основе того, является ли он NodeVM
или NetworkLinkVM
.
Это будет устанавливать ZIndex только для ваших DataTemplates, но как только они отсортированы, вы можете установить ZIndex: NetworkLinkVM's
внутренний Line
и TextBlock