Как заставить средства управления в WPF заполнять свободное место?

Если вы уверены, что возвращаете только номера или пустые ячейки, это предотвратит двойной поиск:

=IFERROR(VALUE(A1&" "),"")

В вашем случае замените A1 на VLOOKUP($C$3,Table1[#All],2, FALSE)

290
задан lokusking 25 September 2016 в 19:48
поделиться

4 ответа

Каждое управление, происходящее от [1 124] Panel реализации отличная логика макета, выполненная в Measure() и Arrange():

  • Measure() определяет размер панели, и каждый из ее детей
  • Arrange() определяет прямоугольник, где каждое управление представляет

последний ребенок DockPanel заливки остающееся пространство. Можно отключить это поведение путем установки LastChild свойство к false.

StackPanel просит у каждого ребенка его желаемый размер и затем складывает их. Вызовы панели стека Measure() на каждом ребенке, с доступным размером [1 110] и затем используют желаемый размер ребенка.

А Grid занимает все свободное место, однако, это будет устанавливать каждого ребенка на их желаемый размер и затем центрировать их в ячейке.

можно реализовать собственную логику макета путем получения от [1 112] и затем переопределения MeasureOverride() и ArrangeOverride().

См. эта статья для простого примера.

158
ответ дан Martin Schneider 23 November 2019 в 01:43
поделиться

Существуют также некоторые свойства, которые можно установить, чтобы вынудить управление заполнить свое свободное место, когда оно иначе не сделало бы так. Например, можно сказать:

HorizontalContentAlignment="Stretch"

..., чтобы вынудить контент управления простираться горизонтально. Или можно сказать:

HorizontalAlignment="Stretch"

..., чтобы вынудить само управление простираться горизонтально для заполнения его родителя.

222
ответ дан Matt Hamilton 23 November 2019 в 01:43
поделиться

Ну, я изобразил его сам, прямо после регистрации, которая является большей частью смущения путь.:)

кажется, что каждый член StackPanel просто заполнит его минимальный требуемый размер.

В DockPanel, я прикрепил вещи в неправильном порядке. Если TextBox или ListBox будут единственным прикрепленным объектом без выравнивания, или если они будут добавленным последним, они заполнят остающееся пространство, как требуется.

я хотел бы видеть более изящный метод обработки этого, но она сделает.

18
ответ дан RJFalconer 23 November 2019 в 01:43
поделиться

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

ширина StackPanel, например, будет так же широка как самый широкий элемент, который она содержит. Так, все более узкие элементы имеют немного избыточного пространства. Свойства выравнивания управляют тем, что дочерний элемент делает с дополнительным пространством.

значение по умолчанию для обоих свойств является Фрагментом, таким образом, дочерний элемент расширяется для заполнения всего свободного места. Дополнительные опции включают Левый, Центральный и прямо для HorizontalAlignment и Вершина, Центр и Нижняя часть для VerticalAlignment.

2
ответ дан urini 23 November 2019 в 01:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: