2014-02-24 144 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的。它應該恢復到可用空間。但是,嘿,我不是微軟..