WinRT Z-Index на странице

1

Является ли Canvas.ZIndex для страницы отверстия? Я пытался переместить элемент в фоновом режиме ниже всех других элементов. Я установил ZIndex конкретный элемент в -1, но ничего не произошло. Элемент все еще впереди.

Есть ли другая возможность изменить порядок?

благодаря

У меня есть сетка с 1 строкой и 1 столбец. На этой сетке я помещал две другие решетки. На моей первой сетке я рисую линии, на второй - некоторые границы. (Есть много других элементов управления), как здесь

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

Теперь линии должны быть нарисованы над границами, но под прямоугольниками.

Как я могу это сделать?

  • 0
    Зависит от вашей структуры, но если вы думаете о своей структуре как о DOM, первый элемент находится внизу. Могу поделиться фрагментом, который передает вашу проблему.
Теги:
windows-runtime
winrt-xaml

2 ответа

4
Лучший ответ

Вы влияете на z-index в XAML двумя способами:

  1. Вы логически добавляете вещи после (или ниже) других элементов в вашем XAML
  2. Вы используете Canvas и устанавливаете Canvas.ZIndex.

Это ваши варианты.

0

ZIndex является локальным. Таким образом, все элементы в первой сетке будут либо нарисованы первыми (как в вашем текущем примере), либо последними, если в любой из этих Grids есть ZIndex.

Если вы хотите чередовать, то вы должны иметь

<Grid>border</Grid>
<Grid>lines</Grid>
<Grid>rectangles</Grid>

Установка 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();
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню