2011-10-26 11 views
8

Tengo control de imagen en mi ventana. El tamaño de este control de imagen está establecido en "Auto".Obteniendo el tamaño actual de los controles WPF

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

Cuando intento obtener acceso, devuelve 0. ¿Cómo puedo ver el tamaño real de este control? Cambia el tamaño con la ventana.

Respuesta

15

Puede utilizar .ActualHeight y .ActualWidth para obtener el dictada Height/Width de un control

+0

He intentado hacer esto. Pero el resultado es el mismo ( –

+0

@TimurMustafaev ¿Cómo intentas obtener los valores? ¿A través del código? A través de un enlace? Y cuando intentas obtener los valores? El control debe representarse antes de 'ActualHeigh' y' ActualWidth' Devolveré un tamaño. – Rachel

+0

Llamo a un nuevo formulario desde mi Ventana Principal. En este nuevo formulario hay controles fiew y uno de ellos es Imagen. Después de cargar la ventana, trato de obtener un tamaño como este: _imageControl.ActualWidth o _imageControl.ActualHeigh –

3

La cosa es que los Width y Height propiedades le permiten expresar la tamaño deseado, mientras que lo que quiere es la rendido tamaño - al cual se puede acceder (pero no configurar) usando las propiedades ActualWidth y ActualHeight.

Cabe señalar que estos tampoco son valores estáticos, es decir, una vez configurados, no necesariamente serán los mismos para siempre, ya que se volverán a evaluar en cada secuencia de renderizado ...

Dado que [ActualHeight/ActualWidth] es un valor calculado, debe tener en cuenta que podría haber cambios informados múltiples o incrementales en él como un resultado de varias operaciones realizadas por el sistema de disposición. El sistema de disposición puede calcular el espacio de medida requerido para elementos secundarios, restricciones por el elemento principal, y así sucesivamente.

Por lo tanto, dependiendo de sus requisitos, es posible que desee considerar la reevaluación de sus datos en los puntos apropiados, tal vez cuando el control que contiene cambia de tamaño, por ejemplo.

1

Mientras que algunos de los controles WPF llenan todo el espacio disponible cuando se disponen y se procesan, los otros no. Específicamente, el control de imagen no es del tipo que establece su tamaño en sí mismo, es decir, en los casos en que no se especifica el tamaño del control explícitamente con atributos de ancho/alto o similar.

Pero el control de cuadrícula llena todo el espacio disponible cuando carece de atributos de definición de tamaño. La plantilla de página/ventana en Visual Studio tiene un control de cuadrícula como elemento secundario de un control raíz de página/ventana, y cuando el usuario comienza a poner controles en una página en un editor gráfico, los controles agregados por el usuario primero se vuelven secundarios de esta cuadrícula controlar.

Si ha utilizado la plantilla VS, y su Control de imagen es un elemento secundario del mencionado control Grid, asigne a su Cuadrícula un atributo x: Nombre y puede usar las propiedades ActualWidth/Height de la Grilla para sus necesidades en código subyacente, porque el control de la imagen crece hasta su tamaño de cuadrícula original, siempre que no especifique su tamaño de forma explícita o no, es decir, establezca el contenido de la imagen.

Por cierto, se puede cambiar el comportamiento del tamaño de los controles incorporados. Puede modificar un control y anular las propiedades de dependencia correspondientes. Ver, por ejemplo, https://stackoverflow.com/a/6094993.

Cuestiones relacionadas