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?

Karim Agha
fuente

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;

Zach Johnson
fuente
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);
Nimrod Shory
fuente
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