2014-02-24 46 views
0

我有一个ListView里面的网格,这反过来是在“整体ScrollViewer”。 用户应该能够在整个页面上水平滚动,然后向下滚动像元素一样的多个子列表。虽然我可以水平滚动,将外ScrollViewer周围的网页内容打破我的ListViewsListView里面的ScrollViewer里面的网格

这里是我的XAML设置的削减版本:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="140" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 

    <TextBlock x:Uid="Title" Text="Title"/> 

    <ScrollViewer Grid.Row="1" ZoomMode="Disabled" 
        VerticalScrollBarVisibility="Hidden" 
        HorizontalScrollBarVisibility="Auto" 
        VerticalScrollMode="Disabled" 
        HorizontalScrollMode="Enabled"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="380" /> 
       <ColumnDefinition /> 
      </Grid.ColumnDefinitions> 

      <!--My List--> 
      <ListView x:Name="MyList" Grid.Column="0" /> 


      <Grid x:Name="AppointmentDetailView" Grid.Column="1"> 
       <!--Some other stuff--> 
      </Grid> 
     </Grid> 
    </ScrollViewer> 
</Grid> 

如果我设置一个固定的高度上的任何父ListView或ListView本身的滚动按预期工作,但固定高度对于不同大小的屏幕是不合需要的。我尝试绑定到ListView父母的ActualHeight,但没有运气。

看起来好像ScrollViewers即使禁用了ScrollViewer.VerticalScrollMode,孩子们也不会被限制在可用高度。对我来说似乎很奇怪,我本来预计ScrollViewer的布局逻辑在禁用的方向上与Grid类似。

对此有任何帮助表示赞赏,谢谢!

回答

1

我发现,包括在Grid包装我ScrollViewerScrollViewer的子元素结合到外GridsActualHeightProperty一种解决方法。它的一个黑客位,但做什么,我需要它,去这样的事情

<Grid x:Name="ScrollViewerContainer" ...> 
    <ScrollViewer VerticalScrollMode="Disabled" ...> 
     <!--Page Content--> 
     <Grid Height="{Binding ActualHeight, ElementName=ScrollViewerContainer}" ...> 
       .... 

我个人觉得像ScrollViewer不应允许其子女以确定其Width/Height当滚动模式在特定的方向被禁用因为它打破嵌套ScrollViewer的。它应该恢复到可用空间。但是,嘿,我不是微软..