我有一个具有这样结构的应用程序(其中Frame
的内容设置为Page
,例如MyPage
:
<Window ... Height="450" Width="800">
<Grid>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Frame NavigationUIVisibility="Hidden" Source="Page1.xaml"/>
</ScrollViewer>
</Grid>
</Window>
<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
中并绑定{{1}的高度}到ScrollView
的{{1}}和Grid
属性,以及父Height
的{{1}}的相同属性
答案 0 :(得分:0)
好像我找到了解决方案。我意识到,为了限制侧面板的高度并使其始终可见,我必须确保页面不会比框架大。为此,我必须将根Grid
的高度绑定到ScrollView
的{{1}}属性。我已经在ViewportHeight
类中拥有一个属性,该属性就是这样的框架(用于导航):
MyPage
因此在XAML中,我能够像这样绑定高度:
public partial class MyPage : Page {
public Frame Frame { get; }
// ...
}