0

我有一个 UWP 应用程序,我在其中使用带有枢轴项集合的枢轴控件。现在,我的要求是捕捉枢轴项目上的向下/向上滑动手势。我做了如下的事情:

<Pivot>
    <PivotItem Header="jdslj" ManipulationMode="All" ManipulationStarted="UIElement_OnManipulationStarted" ManipulationDelta="UIElement_OnManipulationDelta"></PivotItem>
    <PivotItem Header="weew" ManipulationMode="All" ManipulationStarted="UIElement_OnManipulationStarted" ManipulationDelta="UIElement_OnManipulationDelta"></PivotItem>
    <PivotItem Header="332" ManipulationMode="All" ManipulationStarted="UIElement_OnManipulationStarted" ManipulationDelta="UIElement_OnManipulationDelta"></PivotItem>
</Pivot>

问题是,当我这样做时,它会覆盖枢轴控制的行为,现在我无法向左/向右滑动来更改枢轴项目。

我能做些什么来同时实现这两个目标吗?

4

1 回答 1

1

正如我们所讨论的,我们可以使用 Pointer 事件来完成这项工作,但在这种情况下,它们只有一部分在移动设备上工作(在 PC 上它们工作正常,你可以尝试一下)。

这是我的示例:

<Grid x:Name="rootGrid" Background="White" PointerPressed="Grid_PointerEntered"
      PointerEntered="Grid_PointerEntered" PointerMoved="Grid_PointerMoved">
    <Pivot x:Name="pivot">
        <PivotItem Header="jdslj">
            <TextBlock Name="textBlock" />
        </PivotItem>
        <PivotItem Header="weew">
        </PivotItem>
        <PivotItem Header="332">
        </PivotItem>
    </Pivot>
</Grid>

后面的代码:

private double Y;
private double deltaY;

private void Grid_PointerEntered(object sender, PointerRoutedEventArgs e)
{
    var pointer = e.GetCurrentPoint(rootGrid);
    Y = pointer.Position.Y;
}

private void Grid_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    var pointer = e.GetCurrentPoint(rootGrid);
    deltaY = pointer.Position.Y;
    if ((deltaY - Y) > 30)
    {
        textBlock.Text = "down";
        Y = 0;
        deltaY = 0;
    }
    else if ((Y - deltaY) > 30)
    {
        textBlock.Text = "up";
        Y = 0;
        deltaY = 0;
    }
}

由于您要求提供样本,因此我发布了此答案,但我想再说一遍,我的样本有效,但不是很敏感。

于 2016-06-02T01:28:20.193 回答