Управление порядком рендеринга (ZOrder) в Silverlight без использования элемента управления Canvas - PullRequest
6 голосов
/ 20 февраля 2009

Я программно добавляю элемент управления UserControl к другому в Silverlight 2, добавляя его в коллекцию дочерних элементов родительского элемента управления. Сначала это работает нормально. Если я делаю что-то еще с окном (в моем случае я прокручиваю всю панель вне поля зрения, а затем снова в поле зрения), то это, очевидно, меняет порядок рендеринга и заставляет мой элемент управления оставаться позади других. Я ищу способ контролировать это поведение, чтобы заставить мое окно быть на вершине. Элемент управления Canvas имеет свойство ZOrder, которое позволяет вам установить это, но я не использую Canvas, я использую сетки.

Я играл с использованием Children.Insert и переписывался с индексом, что также меняет порядок рендеринга, но это похоже на хитрый способ решения проблемы. Как я могу заставить свой контроль быть на вершине?

- Matt

Ответы [ 3 ]

7 голосов
/ 22 февраля 2009

Canvas.ZIndex будет работать для Grid (и любого другого элемента управления, полученного из UIElement).

Как видно из http://msdn.microsoft.com/en-us/library/bb979730(VS.95).aspx Все, что происходит от UIElement (базовый класс для всех отображаемых элементов в Silverlight), поддерживает свойство Canvas.ZIndex, а также Canvas.Top и Canvas.Left.

4 голосов
/ 21 февраля 2009

В сетке ZOrder должен быть продиктован приказом или детьми. Позиция 0 находится внизу, позиция 1 - сверху позиции 0 и т. Д.

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

http://msdn.microsoft.com/en-us/library/system.windows.controls.canvas.zindex(VS.95).aspx

1 голос
/ 20 февраля 2009

Вы должны быть в состоянии использовать Canvas.ZIndex в Grid, на самом деле он неправильно назван и должен быть Panel.ZIndex, но он должен работать.

...