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

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

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

- Мэтт


person Matthew Timbs    schedule 20.02.2009    source источник


Ответы (3)


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

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

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

person dwynne    schedule 21.02.2009

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

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

person Peter Richards    schedule 21.02.2009

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

person Bill Reiss    schedule 20.02.2009