Получение текущего размера элементов управления WPF - PullRequest
10 голосов
/ 26 октября 2011

У меня есть контроль изображения в моем окне.Размер этого элемента управления изображения установлен на «Авто».

<Image x:Name="videoImg" Stretch="Fill" Height="Auto" Width="Auto" />

Когда я пытаюсь получить доступ, он возвращает 0. Как увидеть реальный размер этого элемента управления?Изменение размера с окном.

Ответы [ 3 ]

19 голосов
/ 26 октября 2011

Вы можете использовать .ActualHeight и .ActualWidth, чтобы получить обработанный Height / Width элемента управления

3 голосов
/ 26 октября 2011

Дело в том, что свойства Width и Height позволяют вам выразить желаемый размер , тогда как вам нужен отображаемый размер - к которому можно получить доступ (но не устанавливается) с использованием свойств ActualWidth и ActualHeight.

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

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

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

1 голос
/ 28 ноября 2017

Хотя некоторые элементы управления WPF заполняют все доступное пространство при разметке и рендеринге, другие - нет.В частности, элемент управления Image не относится к тому типу, который устанавливает его размер самостоятельно, т. Е. В тех случаях, когда вы не указываете размер элемента управления явно с атрибутами width / height и т. П.

Но элемент управления Grid заполняетсявсе доступное пространство при отсутствии определяющих размер атрибутов.Шаблон страницы / окна в Visual Studio имеет элемент управления Grid как дочерний элемент корневого элемента управления страницы / окна, и когда пользователь начинает помещать элементы управления на страницу в графическом редакторе, добавленные пользователем элементы управления сначала становятся дочерними элементами этой таблицы.control.

Если вы использовали шаблон VS, и ваш элемент управления Image является дочерним по отношению к указанному элементу управления Grid, присвойте его Grid атрибут x: Name, и вы можете использовать свойства Grid ActualWidth / Height дляваши потребности в выделенном фрагменте кода, потому что элемент управления изображением увеличивается до размера родительской сетки - при условии, что вы не указываете его размер явно или иным образом, т. е. устанавливаете содержимое изображения.

Кстати,Поведение размеров встроенных элементов управления может быть изменено.Вы можете изменить элемент управления и переопределить соответствующие свойства зависимостей.См., Например, https://stackoverflow.com/a/6094993.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...