Разрешить расширение содержимого ячейки сетки WPF за пределами ячейки сетки? - PullRequest
14 голосов
/ 14 июня 2011

В моем окне WPF есть Сетка. Когда конкретная кнопка нажата, я хочу, чтобы элемент управления в одной из ячеек сетки расширялся вниз, чтобы удвоить его первоначальный размер. Когда это происходит, элемент управления обрезается до визуальных границ содержащей ячейки. Однако мне нужно, чтобы весь контент был виден поверх ячейки ниже. Я попытался установить Panel.ZIndex на высокое значение, но безрезультатно. Мне в основном нужно эмулировать функциональность "overflow: visible" в CSS. Возможно ли это в WPF / Xaml?

Ответы [ 3 ]

8 голосов
/ 17 декабря 2011

Установите для свойства ClipToBounds элемента управления в ячейке значение False, а затем оберните содержимое ячейки в Canvas. Canvas - это гарантированный выход за границы, не все элементы управления (например, кнопки).

Пример:

<Canvas Grid.Row="5" Grid.Column="3">
    <TextBlock Text="Long text here" ClipToBounds="False">
</Canvas>
2 голосов
/ 27 января 2012
  • используйте RowSpan или columnspan
  • при определении сетки поместите ячейку внизу. Поскольку движок рендеринга рендерится сверху вниз, и вы хотите, чтобы эта ячейка находилась поверх ваших остальных ячеек. Возможно, вам удастся обойтись без zindex, но я стараюсь свести к минимуму поддержание zindex.
1 голос
/ 14 июня 2011

Вы, вероятно, можете сделать это с помощью всплывающего окна: http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.aspx,, особенно если вы хотите, чтобы переполнение игнорировало границы окна (например, решения с участием элементов декорации могут и не иметь).Вы хотите поместить элемент управления во всплывающее окно, а затем увеличить его высоту, чтобы получить эффект переполнения.Возможно, вам понадобится поместить другую панель или что-то позади всплывающего окна, чтобы гарантировать, что нерасширенный размер останется правильным.

...