У меня есть ситуации, как это:StackPanel высота превышает высоту родительской сетки
<UserControl>
<Grid x:Name="fullGrid" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid x:Name="innerGrid" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel x:Name="leftSide" VerticalAlignment="Stretch">
<ScrollViewer VerticalAlignment="Stretch">
<ItemsControl/ VerticalAlignment="Stretch">
</ScrollViewer>
</StackPanel>
</Grid>
</Grid>
</UserControl>
Проблема заключается в том, что leftSide
StackPanel высота выше, чем его родители: innerGrid
высоты.
Я отлаживал его в Snoop, и кажется, что StackPanel просто игнорирует его свойство VerticalAlignment
.
Я хотел бы избежать установки Heigh={Binding ElementName=xxx, Path=ActualHeight}
, потому что у меня есть некоторые дополнительные Margins
внутри, и это нарушает вид.
Как я могу справиться с этим?
Какая-либо конкретная причина, по которой вы сначала просматриваете средство просмотра прокрутки на панели стека? Основной ответ заключается в том, что вы не можете этого сделать, но есть обходные пути – BradleyDotNET
Нет причин для обхода ScrollViewer. И удаление его работает! Не могли бы вы объяснить мне механику? – Tomasz
В основном StackPanel должен определить размер своих детей. Теперь ScrollViewer внутри него не сообщает размер, но требует, чтобы его родитель сообщал размер, который ScrollViewer будет настраивать сам. Поскольку ни один из двух элементов управления не получает то, что ему нужно, они не могут изменять размер/визуализировать то, как они должны. –