WPF Auto wysokość w kodzie


101

Jak mogę ustawić wartość Heightwłaściwości kontrolki WPF w kodzie C # na „ Auto”?

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

Chcę odtworzyć to zachowanie w kodzie za nim. Jakieś pomysły?

Odpowiedzi:


144

Być może ten link ci pomoże.

Czasami możesz chcieć programowo ustawić wysokość lub szerokość elementu WPF na Auto w kodzie. Aby to zrobić, użyj po prostu wartości Double.NaN (Not a Number).

Na przykład w C #:

this.txtName.Width = Double.NaN;


1
Nie pracuj w moim przypadku. Ale zmieniam szerokość wysokości za pomocą zachowań (mieszanka wyrażeń 4.0 lib)
Franck

1
Link nie działa, ale możesz uzyskać dostęp do zarchiwizowanej wersji tutaj
akjoshi

2
Odpowiedź Nimroda jest znacznie bardziej wyraźna i łatwiejsza do zrozumienia.
David

Uzyskanie „NaN” nie jest prawidłową wartością dla właściwości „MaxWidth”
Damitha

Uważam, że odpowiedź Nimroda jest najczystsza i powinna być teraz zaakceptowaną odpowiedzią (nie jestem pewien, czy GridLength.Autobyła możliwa w przeszłości). Jest też GridLength.Stardo wypełnienia pozostałego obszaru.
Wolfgang Schreurs,

111

Możesz użyć

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

8
Jakieś różnice między tą odpowiedzią a zaakceptowaną odpowiedzią? Bo jeśli nie, to powinna być najlepsza odpowiedź na to, aby nie omijać ram.
estebro

3
Według reflektora, GridLength.Auto to nowy GridLength (1.0, GridUnitType.Auto); dlatego nie jest dokładnie równoważne z zaakceptowaną odpowiedzią, ale jest znacznie bardziej czytelne.
helios456

Nie jest to tak ogólne rozwiązanie, jak przyjęta odpowiedź. Nie wszystkie kontrolki implementują właściwość Height jako obiekt „GridLength” (struct). Dla tych, którzy używają tylko podwójnej odpowiedzi, ta odpowiedź nie działa. A pytanie nie było generalnie zadawane, wykorzystywało jedynie siatkę jako przykład.
UuDdLrLrSs
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.