【发布时间】:2020-07-17 15:13:35
【问题描述】:
我有一个具有这样结构的应用程序(其中Frame 的内容设置为Page 例如MyPage:
MainWindow.xaml
<Window ... Height="450" Width="800">
<Grid>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Frame NavigationUIVisibility="Hidden" Source="Page1.xaml"/>
</ScrollViewer>
</Grid>
</Window>
MyPage.xaml
<Page ...>
<Grid Background="GhostWhite">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Background="Pink">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0">Title</TextBlock>
<ScrollViewer Grid.Row="1" Background="Yellow" VerticalScrollBarVisibility="Auto">
<StackPanel>
<Rectangle Margin="10" Fill="Red" Width="250" Height="100"/>
<Rectangle Margin="10" Fill="Red" Width="250" Height="100"/>
<Rectangle Margin="10" Fill="Red" Width="250" Height="100"/>
<Rectangle Margin="10" Fill="Red" Width="250" Height="100"/>
</StackPanel>
</ScrollViewer>
</Grid>
</Grid>
</Page>
在 Visual Studio 中,页面呈现如下,左侧面板内有滚动条,这是我希望它看起来的样子:
但是,当我编译时,实际上最终发生的是页面的ScrollView 正在扩展以占用其内容的所有空间,而主窗口中的ScrollView 是显示滚动条的那个。像这样:
如何让内部ScrollView 不超过其父网格?
我知道我可以给它一个固定的高度,但这不是我想要的,我尝试将ScrollView 包装在Grid 中并将ScrollView 的高度绑定到@987654337 @ 的Height 和ActualHeight 属性,以及父Grid 的RowDefinition 的相同属性
【问题讨论】:
-
您可能想尝试与
ScrollViewer的ViewportHeight(Docu) 绑定,而不是ActualHeight,其中包括不可见的部分。 -
您需要主窗口中的滚动查看器吗?没有它,它可以按照您的意愿工作。
-
@Blechdose 我这样做了,框架的内容会动态变化,如果它溢出(大多数页面都会),那么它需要有一个滚动条(我不想在每个页)
-
@FlorianH。
ViewportHeight是只读属性。我不能把它设置为任何东西。如果您要绑定其他内容,我不知道您的意思,请您详细说明一下,谢谢
标签: c# wpf scrollview platform-specific