Автоматическая высота 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.