2012-08-17 44 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>