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?

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;


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);

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.