Altura automática de WPF en el código


101

¿Cómo puedo establecer el valor de la Heightpropiedad de un control WPF en el código C # en " Auto"?

<Grid.RowDefinitions>
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
</Grid.RowDefinitions>

Quiero reproducir este comportamiento en el código subyacente. ¿Algunas ideas?

Respuestas:


144

Quizás este enlace te ayude.

En ocasiones, es posible que desee establecer mediante programación el Alto o Ancho de un elemento WPF en Auto en el código. Para hacer esto, simplemente use el valor Double.NaN (Not a Number).

Por ejemplo, en C #:

this.txtName.Width = Double.NaN;


1
No trabajes en mi caso. Pero estoy cambiando el ancho de la altura a través de los comportamientos (combinación de expresiones 4.0 lib)
Franck

1
El enlace está muerto, pero puede acceder a una versión archivada aquí
akjoshi

2
La respuesta de Nimrod es mucho más explícita y más fácil de entender.
David

Obtener 'NaN' no es un valor válido para la propiedad 'MaxWidth'
Damitha

Siento que la respuesta de Nimrod es la más limpia y ahora debería ser la respuesta aceptada (no estoy seguro de que GridLength.Autofuera posible en el pasado). También hay GridLength.Starque llenar el área restante.
Wolfgang Schreurs

111

Puedes usar

RowDefinition rd = new RowDefinition ();  
rd.Height = GridLength.Auto;  
ContentGrid.RowDefinitions.Add (rd);

8
¿Alguna diferencia entre esta respuesta y la respuesta aceptada? Porque si no, esta debería ser la mejor respuesta para no eludir el marco.
estebro

3
Según reflector, GridLength.Auto es nuevo GridLength (1.0, GridUnitType.Auto); por lo tanto, no es exactamente equivalente a la respuesta aceptada, pero es mucho más legible.
helios456

Esta no es una solución tan general como la respuesta aceptada. No todos los controles implementan una propiedad Height como un objeto (estructura) 'GridLength'. Para aquellos que solo usan el doble, esta respuesta no funciona. Y la pregunta no era una pregunta general, solo usaba una cuadrícula como ejemplo.
UuDdLrLrSs
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.