在ScrollView中防止Windows 8 XAML应用程序中的页面扩展框架

在ScrollView中防止Windows 8 XAML应用程序中的页面扩展框架,xaml,windows-8.1,Xaml,Windows 8.1,我正在创建一个基本应用程序来测试基于XAML的Windows8应用程序中的一些功能 为了简化我的示例,我创建了以下结构,但在实际应用中,它会更复杂: <Page x:Name="pageRoot" x:Class="ScrollingTest.Xaml.MainPage" DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}" xmlns="http://s

我正在创建一个基本应用程序来测试基于XAML的Windows8应用程序中的一些功能

为了简化我的示例,我创建了以下结构,但在实际应用中,它会更复杂:

<Page
    x:Name="pageRoot"
    x:Class="ScrollingTest.Xaml.MainPage"
    DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:ScrollingTest.Xaml"
    xmlns:common="using:ScrollingTest.Xaml.Common"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ScrollViewer
            HorizontalScrollMode="Auto" 
            HorizontalScrollBarVisibility="Auto"
            VerticalScrollMode="Disabled"
            VerticalScrollBarVisibility="Hidden" Margin="0,0,0,10" VerticalContentAlignment="Stretch" BorderBrush="#FF0BC8FF" BorderThickness="1" Grid.Row="1" >

                <Frame Content="Frame" Name="theFrame" Margin="100" Width="3000" BorderBrush="Red" BorderThickness="1"
                       ScrollViewer.VerticalScrollMode="Enabled"
                       ScrollViewer.VerticalScrollBarVisibility="Visible"  />
        </ScrollViewer>
    </Grid>
</Page>

加载到框架中的页面高度可变(它包含listview)

问题是,随着子页面高度的增加,ScrollViewer的高度也会增加,这意味着内容会被强制移出屏幕底部

我想要实现的是对父页面进行水平滚动,然后在子页面上使用垂直滚动。在实际应用程序中,可能会有许多子页面,可能在网格中

似乎将框架放入ScrollViewer会破坏框架的内部滚动功能


如果有人能告诉我一个更好的方法来实现我的最终结果,或者我需要改变一些属性,我将非常感激。

我最终使用了以下评论中的解决方案:

这并不是我想要的,因为当改变方向时,它不会自动处理,但它必须这样做

另一个选项是处理页面的SizeChanged事件,并从事件处理程序(
theFrame.height=scrollViewer.ActualHeight
)更新高度。这样,它也可以处理方向的改变

Height="{Binding ElementName=scrollViewer, Path=ActualHeight}"