我的问题
当我在ListBox
中创建新元素时,较新的元素会覆盖旧元素,因为它们不具有相同的ZIndex
因此会阻止选择。在我的ListBox
中,我在Rectangles
上使用透明的Canvas
作为ItemTemplate
和ItemsPanelTemplate
。
我想将所有Elements的ZIndex
更改为相同的值,以便用户可以用鼠标选择他悬停的元素。
截图
屏幕截图1:当ZIndex正确时它应该如何工作和当前的工作
屏幕截图2:当ZIndex不正确时会发生什么
我的XAML代码如下所示:
<cc:ListBoxNoDragSelection ItemsSource="{Binding Rectangles}" Background="{DynamicResource BG}" SelectedItem="{Binding Selected}"
BorderThickness="0">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas x:Name="MockupCanvas" Background="Transparent">
<Canvas.ContextMenu>
<ContextMenu>
<MenuItem Header="New rectangle" Command="{Binding AddNewRectangleToCollectionCommand}"/>
<MenuItem Header="Delete selected rectangle" Command="{Binding TryDeleteRectangleFromCollectionCommand}"/>
</ContextMenu>
</Canvas.ContextMenu>
</Canvas>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Canvas.Left" Value="{Binding Rectangle.X}"></Setter>
<Setter Property="Canvas.Top" Value="{Binding Rectangle.Y}"></Setter>
<Setter Property="Canvas.ZIndex" Value="1"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel Height="Auto" Width="{Binding Rectangle.Width}">
<Label DockPanel.Dock="Top" Content="{Binding Rectangle.Name}" Foreground="{DynamicResource Foreground}" IsHitTestVisible="False"/>
<Rectangle Width="{Binding Rectangle.Width}" Height="{Binding Rectangle.Height}" DockPanel.Dock="Bottom"
Fill="Transparent" Stroke="White" StrokeThickness="3" RadiusX="10" RadiusY="10" />
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</cc:ListBoxNoDragSelection>
正如您所看到的,我尝试将ZIndex设置为每个矩形的相同值,但这似乎根本不起作用。
非常感谢帮助!