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.