Hauteur automatique WPF dans le code


101

Comment pourrais-je définir la valeur de la Heightpropriété d'un contrôle WPF dans le code C # sur " Auto"?

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

Je veux reproduire ce comportement dans le code derrière. Des idées?

Réponses:


144

Peut - être que ce lien vous aidera.

Parfois, vous souhaiterez peut-être définir par programme la hauteur ou la largeur d'un élément WPF sur Auto dans le code. Pour ce faire, utilisez simplement la valeur Double.NaN (Not a Number).

Par exemple, en C #:

this.txtName.Width = Double.NaN;


1
Ne marche pas dans mon cas. Mais je change la largeur de la hauteur à travers les comportements (expression blend 4.0 lib)
Franck

1
Le lien est mort mais vous pouvez accéder à une version archivée ici
akjoshi

2
La réponse de Nimrod est beaucoup plus explicite et plus facile à comprendre.
David

Obtenir 'NaN' n'est pas une valeur valide pour la propriété 'MaxWidth'
Damitha

Je pense que la réponse de Nimrod est la plus claire et devrait maintenant être la réponse acceptée (pas sûr que ce GridLength.Autosoit possible dans le passé). Il y a aussi GridLength.Starpour remplir la zone restante.
Wolfgang Schreurs

111

Vous pouvez utiliser

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

8
Y a-t-il des différences entre cette réponse et la réponse acceptée? Parce que sinon, cela devrait être la meilleure réponse pour ne pas contourner le cadre.
estebro

3
Selon le réflecteur, GridLength.Auto est nouveau GridLength (1.0, GridUnitType.Auto); donc pas exactement équivalent à la réponse acceptée, mais beaucoup plus lisible.
helios456

Ce n'est pas une solution aussi générale que la réponse acceptée. Tous les contrôles n'implémentent pas une propriété Height en tant qu'objet (struct) 'GridLength'. Pour ceux qui utilisent simplement le double, cette réponse ne fonctionne pas. Et la question ne se posait pas en général, elle n'utilisait qu'une grille comme exemple.
UuDdLrLrSs
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.