WPF Automatische Höhe im Code

100

Wie kann ich den Wert der HeightEigenschaft eines WPF-Steuerelements im C # -Code auf " Auto" setzen?

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

Ich möchte dieses Verhalten im Code dahinter reproduzieren. Irgendwelche Ideen?

Karim Agha
quelle

Antworten:

142

Vielleicht hilft Ihnen dieser Link .

Manchmal möchten Sie möglicherweise programmgesteuert die Höhe oder Breite eines WPF-Elements im Code auf Auto setzen. Verwenden Sie dazu einfach den Wert Double.NaN (Not a Number).

Zum Beispiel in C #:

this.txtName.Width = Double.NaN;

Zach Johnson
quelle
1
Arbeite nicht in meinem Fall. Aber ich ändere die Höhe durch Verhalten (Ausdrucksmischung 4.0 lib)
Franck
1
Link ist tot , aber Sie können eine archivierte Version zugreifen hier
akjoshi
2
Nimrods Antwort ist viel expliziter und leichter zu verstehen.
David
Das Erhalten von 'NaN' ist kein gültiger Wert für die Eigenschaft 'MaxWidth'
Damitha
Ich denke, Nimrods Antwort ist die sauberste und sollte jetzt die akzeptierte Antwort sein (nicht sicher, ob GridLength.Autodies in der Vergangenheit möglich war). Es gibt auch GridLength.Starden verbleibenden Bereich zu füllen.
Wolfgang Schreurs
111

Sie können verwenden

RowDefinition rd = new RowDefinition ();  
rd.Height = GridLength.Auto;  
ContentGrid.RowDefinitions.Add (rd);
Nimrod Shory
quelle
8
Gibt es Unterschiede zwischen dieser Antwort und der akzeptierten Antwort? Wenn nicht, sollte dies die beste Antwort sein, um das Framework nicht zu umgehen.
Estebro
3
Laut Reflektor ist GridLength.Auto eine neue GridLength (1.0, GridUnitType.Auto); daher nicht genau gleichbedeutend mit akzeptierter Antwort, aber viel lesbarer.
Helios456
Dies ist keine so allgemeine Lösung wie die akzeptierte Antwort. Nicht alle Steuerelemente implementieren eine Height-Eigenschaft als 'GridLength'-Objekt (Struktur). Für diejenigen, die nur doppelt verwenden, funktioniert diese Antwort nicht. Und die Frage wurde nicht allgemein gestellt, sondern nur als Beispiel verwendet.
UuDdLrLrSs