在canvas上设置矩形的zindex不会将它带到前面

我有canvas上的canvas和矩形的问题。 他们正在以相反的创造顺序获得事件(最新的是在顶部),而不是zindex的顺序……

我有ItemsControl与资源列表绑定。

然后有一个canvas作为项目面板:

     

所有资源都绑定为矩形:

    

并且有一种风格:

            ... 

如您所见,当选择矩形时,我将其Zindex设置为0,其他人则将zindex值设置得更大。 我也尝试使用交换值,但仍然以相同的方式获得焦点。 有人知道为什么会这样吗?

在DataTemplate中的Rectangle上设置Canvas.ZIndex (或实际上是WPF中的Panel.ZIndex )没有任何效果,因为这些Rectangle不是ItemsPanelTemplate中Canvas的直接子项。 换句话说,矩形不是兄弟,但ZIndex是一个相对值,它只影响同一容器控件的兄弟。

实际上,每个矩形都放入ContentPresenter的内容中(这是ItemsControl的项容器类型)。 然后将这些ContentPresenter放入Canvas中。

为了使工作正常,您可以将DataTriggers移动到ItemContainerStyle :

    

您的问题是您的触发器。 Style仅支持EventTrigger,而不支持任何其他类型,因此永远不会执行触发器。 您在DataTemplate中,并且那些支持DataTrigger,因此您可以移动一些东西来解决问题: