Stackpanel: Height vs ActualHeight vs ExtentHeight vs ViewportHeight vs DesiredSize vs RenderSize

я хочу знать высоту всех элементов my StackPanel .

В чем разница между:

  • Высота - Получает или задает предлагаемую высоту элемента.
  • ActualHeight - получает визуализированную высоту этого элемента. ( только для чтения )
  • ExtentHeight - получает значение, содержащее размер экстента по вертикали. ( только для чтения )
  • ViewportHeight - получает значение, которое содержит вертикальный размер области просмотра содержимого. ( только для чтения )
  • DesiredSize - получает размер, вычисленный этим элементом во время прохода измерения процесса макета. ( только для чтения )
  • RenderSize - получает (или задает, но см. Примечания) окончательный размер визуализации этого элемента.

Из MSDN:

Высота
Получает или задает предлагаемую высоту элемента.

Значение свойства: Double - высота элемента в аппаратно-независимых единицах (1/96 дюйма на единицу).

Высота элемента в аппаратно-независимых единицах (1 / 96-й дюйм на единицу).

ActualHeight ( только для чтения )
Получает визуализированную высоту этого элемента.

Значение свойства: Double - высота элемента в виде значения в независимых от устройства единицах (1/96 дюйма на единицу).

Это свойство представляет собой вычисленное значение на основе других входных значений высоты и системы макета. Значение устанавливается самой системой макета на основе фактического прохода рендеринга и поэтому может немного отставать от установленного значения таких свойств, как Высота , которые являются основой изменения ввода.

Потому что ActualHeight - это вычисляемое значение, вы должны знать, что в нем могут быть множественные или инкрементные сообщаемые изменения в результате различных операций системы макета. Система компоновки может вычислять необходимое пространство меры для дочерних элементов, ограничения по родительскому элементу,и т. д.

ExtentHeight ( только для чтения )
Получает значение, содержащее размер экстента по вертикали.

Высота свойства: Double - Double, представляющий вертикальный размер экстента.

Возвращаемое значение описано в разделе «Пиксели, независимые от устройства».

ViewportHeight ( только для чтения )
Получает значение, содержащее вертикальный размер области просмотра содержимого.

Значение свойства: Double - значение Double, представляющее вертикальный размер области просмотра содержимого.

Возвращаемое значение описано в разделе «Пиксели, независимые от устройства».

DesiredSize ( только для чтения )
Получает размер, вычисленный этим элементом во время этапа измерения процесса компоновки.

Значение свойства: Размер - вычисленный размер, который становится желаемым размером для этапа компоновки.

Возвращенное значение по этому свойству будет действительным измерением, только если значение свойства IsMeasureValid истинно.

DesiredSize обычно проверяется как один из факторов измерения, когда вы реализуете переопределения поведения макета, такие как ArrangeOverride, MeasureOverride или OnRender (в OnRender В этом случае вы можете проверить RenderSize, но это зависит от вашей реализации). В зависимости от сценария DesiredSize может полностью соблюдаться вашей логикой реализации, могут применяться ограничения на DesiredSize, и такие ограничения также могут изменять другие характеристики родительского или дочернего элемента. Например, элемент управления, поддерживающий прокручиваемые области (но не производящий от элементов управления уровня платформы WPF, которые уже включают прокручиваемые области), может сравнить доступный размер с DesiredSize. Затем элемент управления может установить внутреннее состояние, которое включало полосы прокрутки в пользовательском интерфейсе для этого элемента управления. Или же DesiredSize потенциально может игнорироваться в определенных сценариях.

RenderSize Получает окончательный размер визуализации этого элемента.

Значение свойства: Размер - визуализируемый размер для этого элемента.

Это свойство можно использовать для проверки применимости визуализации размер в переопределениях системы макета, таких как OnRender или GetLayoutClip.

Более распространенным сценарием является обработка события SizeChanged с переопределением обработчика класса или событием OnRenderSizeChanged.


В моем случае я хочу знать желаемый высота всех элементов в StackPanel .

Другими словами: я хочу знать высоту всех элементов в StackPanel (до рисования), и если они будут переполнять панель, я буду

  • удалить
  • сжать
  • масштаб
  • настроить

элементы, чтобы они помещались в StackPanel .

Это означает, что я, вероятно, хочу получить желаемый height (ExtentHeight? DesiredSize?) во время события resize ( SizeChanged ? Lay outUpdated ? ) - до того, как произойдет рисование (так это быстрее).

Большинство этих свойств возвращают ноль; так что очевидно, что есть некоторое понимание того, что означают эти свойства, чего я не знаю и не объясняется в документации.

24
задан Dave Clemmer 16 June 2013 в 00:25
поделиться