Ive a ListBox with a Canvas ItemsPanel that displays 2 different types of objects: NodeVMs and LinkLineVMs (using a CompositeCollection). Each VM object has a DataTemplate:
Set your ZIndex index in ListBox.ItemContainerStyle
instead of your DataTemplate.
The reason for this is that all items are wrapped in a ListBoxItem
, so you need to set the ZIndex on the ListBoxItem
instead of on the DataTemplate
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Canvas.ZIndex"
Value="{Binding Converter={StaticResource GetObjectZIndexConverter}}" />
</Style>
You'll need a converter that checks the typeof
your databound object, and returns the correct ZIndex based on if it's a NodeVM
or NetworkLinkVM
.
This will only set the ZIndex for your DataTemplates, but once those are sorted out, you can set the ZIndex of NetworkLinkVM's
internal Line
and TextBlock