在没有ListView的情况下捕获网格上的滑动事件,滚动条阻碍

时间:2015-10-17 22:42:09

标签: c# xaml listview windows-phone-8.1

我有Grid来处理滑动事件。在此Grid上放置ListView。不幸的是,如果ListView有自己的滚动条(大于页面),它就会吃掉#34;所有滑动事件。无法在ListView所在的屏幕部分捕获向左滑动或向右滑动事件。

GridListView

<Grid
    Name="SwipingSurface"
    Background="Transparent"
    Height="657"
    Margin="30">
   (...)
    <ListView 
        ShowsScrollingPlaceholders="True"
        Grid.Row="1"
        ItemsSource="{Binding MeditationDiary}" 
        FontFamily="Segoe WP" 
        Margin="0,45.5,0,0" 
        Grid.RowSpan="2" 
        d:LayoutOverrides="TopPosition, BottomPosition">
        <ListView.ItemTemplate>
            <DataTemplate>
               [Grid and textblock template]
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>

处理滑动(右)事件的代码:

public MainPage()
{
    this.InitializeComponent();

    this.NavigationCacheMode = NavigationCacheMode.Required;

    SwipingSurface.ManipulationMode = ManipulationModes.TranslateX | ManipulationModes.TranslateY;
    SwipingSurface.ManipulationStarted += OnStarted;
    SwipingSurface.ManipulationCompleted += OnManipulationCompleted;
}

public void OnStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
    _initialPoint = e.Position;
}

public void OnManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
    var currentPoint = e.Position;
    if (_initialPoint.X - currentPoint.X >= Constants.SwipingTreshold)
    {
        // Do something
    }
}

有没有办法能够处理Grid上的滑动事件,而ListView却没有阻挡?

/ edit有人投票赞成这个问题,因为他或她发现不清楚要问的是什么,所以请澄清一下:上面的代码生成下面的ListView。如果您在History上滑动,则可向左滑动并注意事件。但是,如果您在包含内容的ListView上滑动(仅当它长于页面并且您可以向下滚动时),则不会注册滑动。我认为这是因为ListView正在捕捉事件。

The problem with sipwing

1 个答案:

答案 0 :(得分:1)

也许添加ScrollViewer.Horizo​​ntalScrollBarVisibility =&#34;已禁用&#34;你的listView声明可能有所帮助。作为替代方法您可以尝试修改listView的样式。也许你会在那里找到一个滚动查看器,然后禁用它设置它的属性。