На самом деле лучшее, на что вы можете надеяться, - это сделать элемент самым верхним по отношению к любым элементам в одной и той же родительской панели (таким как StackPanel, Grid, Canvas и т. Д.). Z-порядок элементов в панелях управляется вложенным свойством Panel.ZIndex .
Например:
<Grid>
<Rectangle Fill="Blue" Width="50" Height="50" Panel.ZIndex="1" />
<Rectangle Fill="Red" Width="50" Height="50" Panel.ZIndex="0" />
</Grid>
В этом примере синий прямоугольник появится сверху. Это объясняется немного подробнее в этом блоге .
Существует также проблема с изменениями Panel.ZIndex, которые не сразу отражаются в пользовательском интерфейсе. Существует закрытый метод, который позволяет обновлять z-index, но, поскольку он закрытый, использовать его не рекомендуется. Чтобы обойти это, вам нужно удалить и повторно добавить детей.
Однако вы не можете сделать любой данный элемент самым верхним. Например:
<Grid>
<Grid>
<Rectangle Fill="Blue" Width="50" Height="50" Panel.ZIndex="1" />
<Rectangle Fill="Red" Width="50" Height="50" Panel.ZIndex="0" />
</Grid>
<Grid>
<Rectangle Fill="Green" Width="50" Height="50" Panel.ZIndex="0" />
<Rectangle Fill="Yellow" Width="50" Height="50" Panel.ZIndex="0" />
</Grid>
</Grid>
В этом случае будет отображаться желтый прямоугольник. Потому что вторая внутренняя сетка показана поверх первой внутренней сетки и всего ее содержимого. Вы должны изменить его так, чтобы синий прямоугольник был наверху:
<Grid>
<Grid Panel.ZIndex="1">
<Rectangle Fill="Blue" Width="50" Height="50" Panel.ZIndex="1" />
<Rectangle Fill="Red" Width="50" Height="50" Panel.ZIndex="0" />
</Grid>
<Grid Panel.ZIndex="0">
<Rectangle Fill="Green" Width="50" Height="50" Panel.ZIndex="0" />
<Rectangle Fill="Yellow" Width="50" Height="50" Panel.ZIndex="0" />
</Grid>
</Grid>
При работе с ItemsControl этот вопрос актуален. У большинства других элементов управления есть один дочерний элемент, но вам все равно нужно выдвинуть его вперед, чтобы сделать любого из его дочерних элементов лучшим.
Наконец, Украшения - это хороший способ поставить вещи поверх всего, но они не являются частью основного визуального дерева. Поэтому я не уверен, что это сработает в вашем случае.