У меня есть Grid в моем окне WPF. Когда нажата конкретная кнопка, я хочу, чтобы элемент управления в одной из ячеек Grid расширялся вниз, чтобы удвоить его первоначальный размер. Когда это происходит, элемент управления привязывается к визуальным границам содержащейся ячейки. Тем не менее, мне нужно, чтобы весь контент был видимым, над верхней частью ячейки ниже. Я попытался установить Panel.ZIndex на большое значение, но безрезультатно. Мне в основном нужно подражать функциональности "переполнения: видимые" в CSS. Возможно ли это в WPF/Xaml?
Разрешить содержимое ячейки сетки WPF расширяться за пределами ячейки сетки?
Ответ 1
Задайте свойство ClipToBounds элемента управления в ячейке False
, а затем оберните содержимое ячейки в холсте. Canvas - это гарантированный разрыв за пределами, но не все элементы управления (например, кнопки).
Пример:
<Canvas Grid.Row="5" Grid.Column="3">
<TextBlock Text="Long text here" ClipToBounds="False">
</Canvas>
Ответ 2
- использовать RowSpan или столбцы
- при определении сетки помещает ячейку внизу. Поскольку механизм рендеринга отображается сверху вниз, и вы хотите, чтобы эта ячейка была поверх ваших других ячеек. Вы можете уйти с zindex, но я стараюсь свести к минимуму сохранение zindex.
Ответ 3
Возможно, вы можете сделать это с помощью всплывающего окна: http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.aspx, особенно если вы хотите, чтобы переполнение игнорировало границы окна (решения, связанные с украшениями, например, не может). Вы хотите поместить элемент управления во всплывающее окно, а затем развернуть высоту всплывающего окна, чтобы получить эффект переполнения. Возможно, вам придется добавить другую панель или что-то за всплывающее окно, чтобы гарантировать, что размер нерасширенного размера остается верным.