在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,因此您可以移动一些东西来解决问题: