在我的程序中,我使用 ScrollViewer
来显示里面的元素,但是问题是当 ScrollViewer
被内容填充时,它的高度会自动改变,并且由于高度等于内容而无法滚动。我在 Grid
中放置了一个 ScrollViewer
,它会自动伸展到它的全高 VerticalAlignment="Stretch"
。我无法预先限制它的高度,因为它的高度会自动调整到其父级以填充所有空间。我该如何解决这个问题?
<Grid Grid.Column="0" RowSpacing="10">
<Grid.RowDefinitions>
<RowDefinition MaxHeight="35"/>
<RowDefinition MaxHeight="35"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="2">
<ScrollViewer VerticalAlignment="Stretch" VerticalScrollMode="Enabled" VerticalScrollBarVisibility="Visible" HorizontalScrollMode="Disabled">
<ItemsControl x:Name="notesContent" Loaded="NotesContent_Loaded" Margin="0,0,15,0">
<ItemsControl.ItemContainerTransitions>
<TransitionCollection>
<AddDeleteThemeTransition>
</AddDeleteThemeTransition>
</TransitionCollection>
</ItemsControl.ItemContainerTransitions>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
</Grid>
</Grid>
回答1
ScrollViewer 会自动改变它的高度并且不会滚动
ScrollViewer 的父级是 Grid,并且您已将其 Vertical Alignment 属性设置为 Stretch,它将垂直填充到网格中。而且它是设计使然,您可以参考 Grid https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.grid?view=winrt-22000。
而如果要让ScrollViewer可滚动,则需要让内容大于ScrollViewer的实际高度,更好的方法是https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.scrollviewer?view=winrt-22000的特定高度value。