#c# #.net #wpf #scrollviewer #actualheight
#c# #.net #wpf #scrollviewer #фактическая высота
Вопрос:
У меня есть Grid
с этими настройками строк: (Я не могу опубликовать много кода, извините)
RowDefinition Height="1*"
RowDefinition Height="120"
Внутри этой сетки у меня есть ScrollViewer
с Height="Auto"
и verticalAlignment = "Stretch"
в строке 0.
В строке 2 у меня есть другая сетка с фиксированной высотой 60 пикселей.
Когда я это делаю this.UpdateLayout
(внутри UserControl
), то scrollviewer.ActualHeight
значение переходит к 2332, что соответствует размеру изображения внутри него и превышает разрешение экрана. Почему он не обновляется, чтобы соответствовать размеру экрана?
Спасибо.
Комментарии:
1. внутри чего находится сама сетка?
2. Установка высоты определения первой строки в «Звезду» — не имеет особого смысла, поскольку она никогда не заполнит оставшееся пространство, «Звезда» обычно используется для самой последней строки или самого последнего столбца. Обычно UpdtaeLayout не требуется — в конце концов, он работает асинхронно, поэтому в окне просмотра все равно не будут отображаться правильные цифры.
3. в сетке есть scrollviewer, сетка и другие вещи, которые не имеют значения. Я уже пробовал ставить 0.8 * и 0.2 * или что-нибудь подобное.
Ответ №1:
Если вы поместите внешний элемент Grid
в f.i. a StackPanel
с ориентацией по вертикали, то может не быть ограничения на высоту сетки, а затем и вертикального ограничения на ScrollViewer
. Поместите Grid
в DockPanel
или установите (максимальную) высоту Grid
. Тогда ScrollViewer
высота будет ограничена.
Комментарии:
1. этот вид не решался. Но заставил меня заметить ошибку. Моим основным контейнером UserControl была stackpanel. Когда я изменил его на Grid. Это сработало! 😀 ты
Ответ №2:
Используется минимальная высота, максимальная высота
<ScrollViewer
VerticalAlignment="Top"
Grid.Column ="0"
MinHeight="60"
MaxHeight="190"
Grid.Row="0"
/>
затем настройте свой Scrollviewer в зависимости от разрешения экрана