Управление порядком рендеринга (ZOrder) в Silverlight без использования Canvas control

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

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

- Matt

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

Вы должны иметь возможность использовать Canvas.ZIndex в гриде, это фактически неправильно и должно быть Panel.ZIndex, но оно должно работать.