Проблема наложения WPF Adorner

Я пытаюсь достичь функциональности, аналогичной функции Popup, без использования Popup, но вместо этого украшаю свой ContentControl простым украшением. По сути, я хочу, чтобы ContentControl имел эффект «наложения», при котором он является самым верхним объектом над всеми другими элементами - аналогично элементу управления Popup.

Вот проблема, с которой я столкнулся, и я надеюсь, что кто-то сможет указать, в чем я ошибаюсь:

У меня есть сетка стендов с двумя определениями ряда. Первая строка содержит элемент пользовательского интерфейса, например прямоугольник. Вторая строка содержит настраиваемый элемент управления, который я разработал для имитации функциональности выдвигающегося «ящика». Обычно, когда я нажимаю кнопку, я собираюсь анимировать TranslateTransform, чтобы «сдвинуть» мой ContentControl «вверх». Это работает нормально, за исключением того, что он обрезается под прямоугольником в первом ряду сетки. Если я удалю определения строк в сетке, тогда, когда желаемое поведение будет достигнуто, ContentControl перемещается «вверх» и частично «поверх» прямоугольника. Прямоугольник - это просто заполнитель того, чего я пытаюсь достичь. Я в основном хочу иметь элемент управления типа ящика, который может выдвигаться и быть поверх всех других элементов управления.

Я новичок в использовании класса Adorner, поэтому надеюсь, что кто-то может указать, в чем я ошибаюсь.

Спасибо.

Крис


person Chris    schedule 16.05.2011    source источник
comment
Можете ли вы уточнить, почему вы не можете использовать для этого Popup?   -  person aL3891    schedule 16.05.2011
comment
Конечно. Допустим, я хочу создать вид выдвижного ящика из нижней части окна. Если я использую всплывающее окно, как только я устанавливаю IsOpen в значение true, контент становится видимым, поскольку он не соблюдает границы окна, поэтому он больше не будет выглядеть так, как будто что-то скользит вверх из нижней части окна. .   -  person Chris    schedule 16.05.2011
comment
Что, если вы установите высоту всплывающего окна равной нулю и анимируете его до полного размера? вы устанавливаете фиксированную высоту на панели макета во всплывающем окне, чтобы она не изменяла размер, а вместо этого зажимала во всплывающем окне. стоит хотя бы выстрелить :)   -  person aL3891    schedule 16.05.2011


Ответы (1)


Измените родительский элемент украшения на полную сетку, а не только ваш элемент управления. Если вы поместите элемент управления в строку сетки и установите украшение для украшения элемента управления, он обычно будет обрезан в этой строке, потому что элемент управления есть.

person Ed Bayiates    schedule 16.05.2011