2015-09-07 221 views
1

我有一個頁面,它有許多UI元素,它的滾動垂直像時間軸。在中間我有一個支點,當它獲得焦點或鼠標指針進入scrollviewer停止滾動。在ScrollViewer中滾動,滾動查看器不會滾動

<ScrollViewer x:Name="scrollViewer" VerticalScrollMode="Enabled" HorizontalScrollMode="Disabled"> 
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="90"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition MaxWidth="180"/> 
     <ColumnDefinition Width="360*" MaxWidth="1060"/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
     <!-- more UI elements--> 
    <Pivot ScrollViewer.HorizontalScrollMode="Disabled" ScrollViewer.VerticalScrollMode="Disabled" x:Name="InfoPivot" Title="Pivot" Grid.Column="1" Grid.Row="4" VerticalAlignment="Top" MaxWidth="1060" HorizontalAlignment="Left" MinHeight="500"> 
     <PivotItem Header="Mylist"> 
      <GridView x:Name="theList" Margin="20,10,10,13" ItemTemplate="{StaticResource GridViewTemplate1}" VerticalAlignment="Top" HorizontalAlignment="Center"/> 
     </PivotItem> 
    </Pivot> 
</Grid> 

回答

1

我找到了一個解決辦法,但我希望有一個更好的辦法。

編輯:改變了它使它感覺更像默認滾動的分工。

private void PivotItem_PointerWheelChanged(object sender, PointerRoutedEventArgs e) 
{ 
    if (e.GetCurrentPoint(scrollViewer).Properties.MouseWheelDelta == (-120)) 
    { 
     // On Mouse Wheel scroll Backward 
     scrollViewer.ChangeView(null, scrollViewer.VerticalOffset + Window.Current.CoreWindow.Bounds.Height/7, null, false); 
    } 
    if (e.GetCurrentPoint(scrollViewer).Properties.MouseWheelDelta == (120)) 
    { 
     // On Mouse Wheel scroll Forward 
     scrollViewer.ChangeView(null,scrollViewer.VerticalOffset - Window.Current.CoreWindow.Bounds.Height/7, null, false); 
    } 
} 
+0

這似乎工作,但似乎沒有海岸或有加速度。你有沒有找到更好的方法來解決這個問題? –

+0

@BobBurningham在我修好之後,Nope還沒有投入任何時間,它進入了我的優先事項的底部。 – Stamos

1

documentation規定,我們不把一個Pivot一個ScrollViewer內。

請勿在滾動查看器中放置Pivot控件以避免與數據透視表的滾動邏輯衝突。

PointerWheelChanged醫生說:

特定的Windows運行時控制可能有基於類的處理爲PointerWheelChanged輸入事件。如果是這樣,該控件可能會覆蓋方法OnPointerWheelChanged。通常,事件被標記爲由類處理程序處理,並且PointerWheelChanged事件不會引發該控件上的任何用戶代碼處理程序處理。控件可能會這樣做,以便通過使用指針輪操作來支持遍歷其子元素。

關於GridViewListView的說明文檔也適用於Pivot

PointerWheelChanged事件不會從GridView中冒出來。這意味着如果指針位於GridView上,那麼其中包含GridView的控件不會收到鼠標滾輪更改消息。例如,如果將一個GridView放入一個ScrollViewer中,則當指針位於GridView上時,不能用鼠標滾輪滾動ScrollViewer。