Автоматическая высота 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.