Автоматическая высота WPF в коде

102

Как я мог установить значение Height свойства элемента управления WPF в коде C # на " Auto"?

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

Я хочу воспроизвести это поведение в коде. Любые идеи?

Карим Ага
источник

Ответы:

146

Возможно, эта ссылка вам поможет.

Иногда вам может понадобиться программно установить для высоты или ширины элемента WPF значение Авто в коде. Для этого просто используйте значение Double.NaN (Not a Number).

Например, в C #:

this.txtName.Width = Double.NaN;

Зак Джонсон
источник
1
В моем случае не работает. Но я изменяю высоту и ширину с помощью поведения (выражение blend 4.0 lib)
Franck
1
Ссылка мертва, но вы можете получить доступ к архивной версии здесь
Акджоши
2
Ответ Нимрода более ясен и понятен.
Дэвид
Получение «NaN» не является допустимым значением для свойства «MaxWidth»
Дамита
Я считаю, что ответ Нимрода самый чистый и теперь должен быть принятым ответом (не уверен, что это GridLength.Autoбыло возможно в прошлом). Также GridLength.Starнужно заполнить оставшуюся область.
Wolfgang Schreurs
111

Ты можешь использовать

RowDefinition rd = новый RowDefinition ();  
rd.Height = GridLength.Auto;  
ContentGrid.RowDefinitions.Add (rd);
Нимрод Шори
источник
8
Есть ли различия между этим ответом и принятым ответом? Потому что в противном случае это должно быть лучшим ответом на то, чтобы не обходить фреймворк.
Эстебро,
3
Согласно отражателю, GridLength.Auto - это новый GridLength (1.0, GridUnitType.Auto); поэтому не совсем эквивалент принятого ответа, но гораздо более читабельный.
helios456
Это не такое общее решение, как принятый ответ. Не все элементы управления реализуют свойство Height как объект (структуру) GridLength. Для тех, кто просто использует double, этот ответ не работает. И вопрос вообще не задавался, использовалась только сетка в качестве примера.
UuDdLrLrSs