针对孔页的Canvas.ZIndex?我试图在后台移动一个元素,低于所有其他元素。我将ZIndex的特定元素设置为-1,但没有任何事情发生。元素仍在前面。
还有其他可能改变订单吗?
由于
我有一行1行1列。在这个网格上我放了2个其他网格。 在我的第一个网格上画线,第二个是边框。 (还有很多其他控件) 喜欢这里
<Grid>
<Grid>
lines
</Grid>
<Grid>
borders
rectangles
</Grid>
</Grid>
现在应该在边框上绘制线条,但在矩形下方。
我该怎么做?
答案 0 :(得分:4)
您可以通过两种方式影响XAML中的z-index:
Canvas
并设置Canvas.ZIndex
。这些是您的选择。
答案 1 :(得分:0)
ZIndex是本地的。因此,第一个网格中的所有元素都将首先绘制(如当前示例中所示),如果其中任何一个网格具有ZIndex,则为last。
如果你想要交错,那么你应该
<Grid>border</Grid>
<Grid>lines</Grid>
<Grid>rectangles</Grid>
在不是Canvas直接子元素的元素上设置ZIndex不会做任何事情。
Canvas绘制循环有点像这样
// make unique small-to-big list of all ZIndex of all elements of a canvas
var zvalues = canvas.elements.Select(ZIndex).Unique().Sort(DESC);
// draw them back to front
foreach (var z in zvalues) {
foreach (var e in canvas.elements.Where(e=>e.ZIndex==z)) {
e.Draw();
}
}