2012-08-17 47 views
5

我目前正在構建一個Windows 8 XAML C#應用程序。在頁面中,我有一個用於水平滑動和滾動的滾動查看器。我有幾個控件在scorllviewer中工作得很好。但是當你滾動並且你的光標位於ListView/GridView之上時,那個控件將處理scrollnig而不是scrollviewer。 滑動這不會發生,但與鼠標滾輪停止scrollvieweing滾動。 有人知道如何禁用此行爲或有解決方法嗎?ScrollViewer GridView XAML

回答

0

這也是我看到的問題。它不存在觸摸 - 只有在使用鼠標滾輪時纔會出現。我還不知道解決方法。我不認爲有一個。

1

在處理了這個問題很長一段時間後,我決定改變策略。至少在我的解決方案中,我將內部GridView更改爲僅爲ItemsControl。這樣我就可以處理所有的點擊/點按操作,但仍然可以按照預期的方式進行滾動。

當然,這個解決方案不適合每個人,因爲有時候您還需要所有選擇內容。但對我來說,它的工作原理是我只需要點擊/點擊項目。

希望它可以幫助

0

我在這裏找到一個解決辦法:msdn workaround

Basicly你必須做到以下幾點:

基地XAML:

<Grid Name="BaseElement"> 
     <ScrollViewer Name="MainScrollViewer" Style="{StaticResource HorizontalScrollViewerStyle}" VerticalScrollMode="Auto"> 
      <GridView /> 
      <GridView /> 
     </ScrollViewer> 
    </Grid> 
  1. 添加新處理根元素:

    BaseElement.AddHandler(PointerWheelChangedEvent, new PointerEventHandler(Bubble_PointerWheelChanged), true); 
    
  2. 實現處理程序來韓德爾滾動:

    private void Bubble_PointerWheelChanged(object sender, PointerRoutedEventArgs e) 
    { 
        // Could walk up the tree to find the next SV or just have a reference like here: 
        MainScrollViewer.ScrollToHorizontalOffset(MainScrollViewer.HorizontalOffset - e.GetCurrentPoint(null).Properties.MouseWheelDelta); 
    } 
    
0

最佳解決方案不斷。

public class CustomGridView : GridView 
{ 
    protected override void OnApplyTemplate() 
    { 
     base.OnApplyTemplate(); 
     var sv = this.GetTemplateChild("ScrollViewer") as UIElement; 
     if (sv != null) 
      sv.AddHandler(UIElement.PointerWheelChangedEvent, new PointerEventHandler(OnPointerWheelChanged), true); 
    } 

    private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e) 
    { 
     e.Handled = false; 
    } 
} 

更多信息:GridView in a ScrollViewer

0

1.增加驗證碼在​​View.cs:

private void ThumbnailViewer_OnMouseWheel(object sender, MouseWheelEventArgs e) 
    { 
     ThumbnailViewerScroller.ScrollToHorizontalOffset(ThumbnailViewerScroller.HorizontalOffset - e.Delta); 
    } 

2.加代碼在XAML:

<ScrollViewer 
      x:Name="ViewerScroller"    
      MouseWheel="ThumbnailViewer_OnMouseWheel"> 
<StackPanel> 
... 
</StackPanel> 
</ScrollViewer>