я хочу знать высоту всех предметов моего StackPanel
.
В чем разница между:
Height
- Получает или задает предлагаемую высоту элемента.
ActualHeight
- Получает визуализированную высоту этого элемента. ( * 1016 только для чтения *)
ExtentHeight
- получает значение, содержащее вертикальный размер экстента. ( * 1023 только для чтения *)
ViewportHeight
- Получает значение, которое содержит вертикальный размер области просмотра контента. ( * 1030 только для чтения *)
DesiredSize
- Получает размер, вычисленный этим элементом во время прохода меры процесса макета. ( 1037 * только для чтения *)
RenderSize
- Получает (или устанавливает, но см. Примечания) окончательный размер рендеринга этого элемента.
Из MSDN:
высота
Получает или задает предлагаемую высоту элемента.
Значение свойства: Double
- Высота элемента в независимых от устройства единицах (1/96 дюйма на единицу).
Высота элемента в независимых от устройства единицах (1/96 дюйма на единицу).
ActualHeight ( только для чтения )
Получает визуализированную высоту этого элемента.
Значение свойства: Double
- Высота элемента в виде значения в независимых от устройства единицах (1/96 дюйма на единицу).
Это свойство является расчетным значением, основанным на других параметрах высоты и системе макета. Значение устанавливается самой системой макета на основе фактического прохода рендеринга и поэтому может немного отставать от заданного значения свойств, таких как Высота , которые являются основой изменения ввода.
Поскольку ActualHeight является вычисленным значением, вы должны знать, что в него могут быть внесены множественные или инкрементные изменения в результате различных операций системы макетов. Система макета может вычислять требуемое пространство меры для дочерних элементов, ограничения родительского элемента и т. Д.
ExtentHeight ( только для чтения )
Получает значение, содержащее вертикальный размер экстента.
Высота свойства: Double
- Double, представляющий вертикальный размер экстента.
Возвращаемое значение описано в независимых от устройства пикселях.
ViewportHeight ( только для чтения )
Получает значение, содержащее вертикальный размер области просмотра содержимого.
Значение свойства: Double
- Double, представляющий вертикальный размер области просмотра контента.
Возвращаемое значение описано в независимых от устройства пикселях.
Желаемый размер ( только для чтения )
Получает размер, вычисленный этим элементом во время прохода меры процесса макета.
Значение свойства: Size
- Расчетный размер, который становится желаемым размером для прохода аранжировки.
Значение, возвращаемое этим свойством, будет действительным измерением только в том случае, если значение свойства IsMeasureValid равно true.
DesiredSize обычно проверяется как один из факторов измерения при реализации переопределений поведения макета, таких как ArrangeOverride, MeasureOverride или OnRender (в случае OnRender вы можете вместо этого выбрать RenderSize, но это зависит от вашей реализации).В зависимости от сценария DesiredSize может полностью соблюдаться вашей логикой реализации, могут применяться ограничения на DesiredSize, и такие ограничения могут также изменять другие характеристики родительского или дочернего элемента.Например, элемент управления, который поддерживает прокручиваемые области (но предпочитает не извлекать из элементов управления уровня структуры WPF, которые уже включают прокручиваемые области), может сравнить доступный размер с DesiredSize.Элемент управления может затем установить внутреннее состояние, которое включает полосы прокрутки в пользовательском интерфейсе для этого элемента управления.Или DesiredSize потенциально может также игнорироваться в определенных сценариях.
RenderSize Получает окончательный размер рендеринга этогоelement.
Значение свойства: Size
- Размер отрисовки для этого элемента.
Это свойство можно использовать для проверки применимого размера рендеринга в переопределениях системы макета, таких как OnRender или GetLayoutClip.
Более распространенным сценарием является обработка события SizeChanged с помощью переопределения обработчика класса или события OnRenderSizeChanged.
В моем случае я хочу знать требуемый высота всех элементов в StackPanel
.
Другими словами: я хочу знать высоту всех элементов в StackPanel (перед рисованием), и если они будут переполнены на панели, я
- удалить
- уменьшить
- масштабировать
- настроить
элементы, чтобы убедиться, что они помещаются в StackPanel .
Что означает, что я, вероятно, хочу получитьt желаемая высота (ExtentHeight?DesiredSize?) Во время события resize ( SizeChanged ? LayoutUpdated ?) - до того, как произойдет рисование (так что это быстрее).
Большинствоэти свойства возвращают ноль;поэтому очевидно, что есть некоторое понимание того, что означают эти свойства, чего я не знаю и не объяснил в документации.