WPF Автоматична висота в коді


101

Як я можу встановити значення 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>

Я хочу відтворити цю поведінку в коді позаду. Якісь ідеї?

Відповіді:


144

Можливо, це посилання вам допоможе.

Часом ви можете програмно встановити висоту або ширину елемента WPF в коді Авто. Для цього просто використовуйте значення Double.NaN (не число).

Наприклад, у C #:

this.txtName.Width = Double.NaN;


1
Не працюй у моєму випадку. Але я змінюю ширину висоти через поведінку (вираз суміш 4,0 lib)
— Франк

1
Посилання мертве, але ви можете отримати доступ до архівованої версії тут
— akjoshi

2
Відповідь Німрода набагато чіткіша і простіша для розуміння.
— Девід

Отримання "NaN" не є дійсним значенням для властивості "MaxWidth"
— Damitha

Я вважаю, що відповідь Німрода є найчистішою, і тепер це має бути прийнята відповідь (не впевнений, що це GridLength.Autoбуло можливо раніше). Там же GridLength.Starзаповнюється залишилася площа.
— Вольфганг

111

Можна використовувати

RowDefinition rd = новий RowDefinition ();  
rd.Height = GridLength.Auto;  
ContentGrid.RowDefinitions.Add (rd);

8
Будь-які відмінності між цією відповіддю та прийнятою відповіддю? Тому що якщо ні, то це має бути головною відповіддю на те, щоб не обійти рамки.
— estebro

3
За даними рефлектора, GridLength.Auto - це новий GridLength (1.0, GridUnitType.Auto); тому не зовсім рівнозначна прийнятій відповіді, але набагато читабельніша.
— helios456

Це не таке загальне рішення, як прийнята відповідь. Не всі елементи управління реалізують властивість Height як об'єкт (структуру) "GridLength". Для тих, хто просто використовує подвійний, ця відповідь не працює. І питання взагалі не задавали, воно лише використовувало сітку як приклад.
— UuDdLrLrSs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.