WinRT Z-Index页面

时间:2014-09-04 14:34:42

标签: c# windows-runtime winrt-xaml

针对孔页的Canvas.ZIndex?我试图在后台移动一个元素,低于所有其他元素。我将ZIndex的特定元素设置为-1,但没有任何事情发生。元素仍在前面。

还有其他可能改变订单吗?

由于

我有一行1行1列。在这个网格上我放了2个其他网格。 在我的第一个网格上画线,第二个是边框。 (还有很多其他控件) 喜欢这里

<Grid>
    <Grid>
        lines
    </Grid>
    <Grid>
        borders
        rectangles
    </Grid>
</Grid>

现在应该在边框上绘制线条,但在矩形下方。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您可以通过两种方式影响XAML中的z-index:

  1. 您在XAML
  2. 中的其他项目之后(或之下)逻辑地放置内容
  3. 您使用Canvas并设置Canvas.ZIndex
  4. 这些是您的选择。

答案 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();
    }
}