Altezza automatica WPF nel codice


101

Come posso impostare il valore della Heightproprietà di un controllo WPF nel codice C # su " Auto"?

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

Voglio riprodurre questo comportamento nel codice sottostante. Qualche idea?

Risposte:


144

Forse questo collegamento ti aiuterà.

A volte, potresti voler impostare a livello di codice l'altezza o la larghezza di un elemento WPF su Auto nel codice. Per fare ciò, usa semplicemente il valore Double.NaN (Not a Number).

Ad esempio, in C #:

this.txtName.Width = Double.NaN;


1
Non lavorare nel mio caso. Ma sto cambiando la larghezza dell'altezza attraverso i comportamenti (miscela di espressioni 4.0 lib)
Franck

1
Il collegamento è morto ma puoi accedere a una versione archiviata qui
akjoshi

2
La risposta di Nimrod è molto più esplicita e più facile da capire.
David

Ottenere "NaN" non è un valore valido per la proprietà "MaxWidth"
Damitha

Sento che la risposta di Nimrod è la più pulita e ora dovrebbe essere la risposta accettata (non sono sicuro che GridLength.Autofosse possibile in passato). C'è anche GridLength.Starda riempire l'area rimanente.
Wolfgang Schreurs

111

Puoi usare

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

8
Qualche differenza tra questa risposta e la risposta accettata? Perché in caso contrario, questa dovrebbe essere la risposta migliore per non aggirare il framework.
estebro

3
Secondo reflector, GridLength.Auto è il nuovo GridLength (1.0, GridUnitType.Auto); quindi non esattamente equivalente alla risposta accettata, ma molto più leggibile.
helios456

Questa non è una soluzione generale come la risposta accettata. Non tutti i controlli implementano una proprietà Height come oggetto (struct) "GridLength". Per quelli che usano solo il doppio questa risposta non funziona. E la domanda non è stata posta in generale, ha utilizzato solo una griglia come esempio.
UuDdLrLrSs
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.