Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C# WPF. Что означает в <RowDefinition Height="1*"/> и как оно высчитывается?

Август Сентябрь Знаток (334), на голосовании 8 месяцев назад
У меня высота 560 программы. Высота второй строки задана 90. Первая - 1*, что должно быть равно оставшемуся месту (560-90=470).
 Title="MainWindow" Height="560" Width="800"> 





Но если я введу явно 470, то первая строка опускается ниже и забирает место из второй строки (будто 470 это слишком большое значение для первой строки и на самом деле 1* примерно ~455 (на глаз прикинул)).
 Title="MainWindow" Height="560" Width="800"> 





Значит, я ошибаюсь и 1* занимает не всё оставшееся место? Как тогда оно высчитывается и сколько у меня высота первой строки на самом деле?
//Сразу уточню, код именно такой, какой вписал сюда, это новый проект и никаких элементов не добавлял, которые могли бы занимать место. Просто сетка, которую хз как высчитать...
Дополнен 9 месяцев назад
Ответ найден: Height="560" это высота всего окна (с учетом шапки с названием приложения), а не клиентского окна. Поэтому первая строка не 470, а меньше.
Голосование за лучший ответ
А Мудрец (14803) 9 месяцев назад
В данном случае * занимает всё оставшееся место. У элемента может быть граница 1-2 пикселя, либо какой-нибудь паддинг.
Всегда используй * хотя бы в одной колонке.
Август СентябрьЗнаток (334) 9 месяцев назад
почему оставшееся место меньше 470? тут нет никаких элементов
timлопии Знаток (442) 9 месяцев назад
В WPF в XAML, когда вы устанавливаете значение Height="1*" для RowDefinition, это означает динамическую высоту, которая занимает оставшееся пространство после учета всех фиксированных высот других строк.

Как это работает:

Если у вас есть строка с Height="1*", то она будет занимать все оставшееся пространство после выделения фиксированных высот других строк.
Если у вас только одна строка с Height="1*", то она будет занимать все оставшееся пространство в контейнере.
Если у вас несколько строк с Height="1*", то они будут равномерно делить оставшееся пространство между собой.
В вашем случае, если у вас высота окна 560, а высота второй строки задана как 90, то первая строка с Height="1*" должна занимать оставшиеся 470 единиц высоты.

Если при установке высоты первой строки в 470 она опускается ниже, возможно, это связано с другими элементами в вашем интерфейсе или с настройками контейнера. Убедитесь, что нет других элементов, которые могут влиять на распределение пространства.

Если оставшиеся 470 единиц не соответствуют ожидаемому поведению, попробуйте провести отладку, чтобы увидеть, как распределяется пространство между строками. Можете также попробовать установить Height="*" для первой строки, чтобы она занимала все доступное пространство, и посмотреть, как это повлияет на отображение.
Похожие вопросы