Как заставить расширитель расширяться по строкам сетки - PullRequest
4 голосов
/ 29 апреля 2011

Я искал ответ на этот вопрос, но все решения, которые я нашел, не работали должным образом.
Здесь проблема. У меня есть интерфейс, основанный на сетке, как показано ниже:

<code>
| <strong><em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em></strong>|
|(v)expander |(v)expander  |(v)expander |  <- grid inside the row of main grid
|<strong><em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>_</strong>|
|                                        |
|                                        |
|                                        |
.                                        . <- grid, stackpanel, etc. inside row
.                                        .
.                                        .
|                                        |
|<strong><em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>_</strong>|
|(^)expander  | (^) expander   |         | <- grid inside the row of main grid
|<strong><em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>__<em>_</em>____</strong>|

Каждый расширитель находится на своей границе.
Теперь я хочу, чтобы расширители расширились до остального интерфейса. Верхние расширители расширяются вниз, нижние - вверх. Я не могу использовать RowSpan. Думаю, это должно быть сделано с zIndex, но я много пытался, но ничего не получалось. Я установил все свойства сетки и границ Panel.ZIndex, скажем, 99, а содержимое экспандера было установлено в ZIndex около 999.

Есть ли способ сделать это?
Спасибо,
Джо

Ответы [ 2 ]

3 голосов
/ 09 мая 2011

Через некоторое время (когда я занимался чем-то еще, чтобы освежить свои мысли на эту тему), я нашел решение. Он основан на решении Карла Шифлета (http://karlshifflett.wordpress.com/2008/02/05/wpf-sample-series-expander-control-with-popup-content/).
Я поместил Решетку, которая держит главные расширители на Холст. Я установил для свойства Canvas Panel.ZIndex значение около 99 и установил для фона нужный цвет. Для свойства Grid.Background было установлено значение «Прозрачный» и Width для заполнения размера холста:

Background="Transparent" Width="{Binding RelativeSource=
  {RelativeSource Mode=FindAncestor, AncestorType={x:Type Canvas}}, 
  Path=ActualWidth}"

Важно было установить все расширители VerticalAlignment на Верх, потому что когда один из них расширяется, высота сетки (которая не должна быть жестко определена в этом случае) также изменяется, и когда для их вертикального выравнивания не установлено значение Сверху все расширители размещены посередине.

Надеюсь, это кому-нибудь поможет.

2 голосов
/ 11 июля 2013

Вы можете использовать всплывающее окно вместо расширителя, если хотите гарантировать, что оно появится сверху.

...