2016-02-24 39 views
0

我一直在嘗試使用兩層的一個畫布。一層橫向滾動,另一層橫向滾動,垂直滾動。 在第二層(垂直滾動的那一層)中,我堆疊了一個透明的網格(或面板)和一個包含信息的面板,以便我們可以看到第一層是在這個層下,如果我們向上滾動,出現在屏幕上。將事件路由到當前元素下的元素

這就像一個魅力,只是如果我水平滾動,第一層(下一個)根本不滾動。如果我們滑動透明網格,如果垂直滾動不滾動,則不會出現問題。

這是我的XAML

<Canvas x:Name="Canvas"> 
    <local:MyPage x:Name="PageContainer"/> <!--This one scrolls horizontally --> 
    <ScrollViewer 
        HorizontalScrollBarVisibility="Disabled" 
        VerticalScrollBarVisibility="Hidden" 
        Height="{Binding ActualHeight, ElementName=UcRoot}"> 
<!--This one scrolls vertically and appears on top --> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 
      <Grid Height="600" Width="600" Grid.Row="0" x:Name="TransparentGrid" ></Grid> 
      <Grid x:Name="Information" Background="Azure" Height="1200" Width="600" Grid.Row="1"> 
      </Grid> 
     </Grid> 
    </ScrollViewer> 

</Canvas> 

我試圖在透明網格許多事情(設置寬度爲1,去除它和信息網格餘量頂部設置爲1200例如)但網格捕獲事件和不會轉發到我的頁面。

我可以得到一些幫助嗎?

謝謝!

+0

如何設置'的ScrollViewer保證金= 「0,0,0,25」'?你的圖層是透明的,所以這可以是好的 – Sakura

+0

這是行不通的。信息面板需要佔用畫布的全部寬度,並且它也應該響應手指滑動 – Daniel

+0

然後,您需要[handle](http://stackoverflow.com/a/12662362/1560697)頂部的「ManipulationDelta」事件層。如果用戶左/右擦,相應地滾動底層 – Sakura

回答

1

你的背景設置爲'Transparent'到電網,以便能夠挖掘它,刷卡..你可能還是需要這些特性一起玩:

ScrollViewer.VerticalScrollMode 
ScrollViewer.HorizontalScrollMode 

雖然,這是我的建議的解決方案:

 <ScrollViewer ScrollViewer.VerticalScrollMode="Enabled" ScrollViewer.HorizontalScrollMode="Disabled" > 
      <Grid > 
       <TextBlock Text="contnet" /> 
      </Grid> 
     </ScrollViewer> 

     <ScrollViewer ScrollViewer.VerticalScrollMode="Disabled" ScrollViewer.HorizontalScrollMode="Enabled" > 
      <Grid Background="Transparent"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="Auto"/> 
       </Grid.RowDefinitions> 
       <Grid Height="600" Width="600" Grid.Row="0" x:Name="TransparentGrid" Background="Transparent" ></Grid> 
       <Grid x:Name="Information" Background="Azure" Height="1200" Width="600" Grid.Row="1"/> 


      </Grid> 
     </ScrollViewer> 

    </Canvas> 
+0

感謝您的滾動模式。它幫助我解決了另一個bug(爲什麼我給了你+1)。然而它並沒有解決最初的問題。 – Daniel

+0

很高興聽到:D ..所以我可能誤解了你,你能否更清楚你的問題? 你想有一個頂部的標題與透明背景水平滾動W /一些項目的能力? –