Carousel UWP Microsoft Toolkit禁用滑动

时间:2018-11-13 08:58:22

标签: uwp carousel swipe offset toolkit

我使用Microsoft.UWP.Toolkir.Controls中的Carousel控件 https://docs.microsoft.com/en-us/windows/communitytoolkit/controls/carousel

当我们单击并按住鼠标左键时,我们可以在平板电脑,phohe中滑动项目。就像“全景”滚动一样。

所以,这是正常的工作,但是当我们在第一个和最后一个项目上按住并移动指针(或平板电脑中的手指)时,我们会在左边(第一项),右边(最后一项)。

当我们移动时,项目得到一些(我不知道如何检查)水平偏移->它返回到先前的状态。

start position carousel view

we hold and move first item, left of it we get some offset

我们可以获取和更改此偏移量还是在第一项和最后一项上禁用此选项?

1 个答案:

答案 0 :(得分:0)

  

我们可以获取和更改此偏移量还是在第一项和最后一项上禁用此选项?

Windows Community Toolkit是开放源代码,您可以检查Carousel源代码。

您说的是 ',当我们在第一个和最后一个项目上按住并移动指针(或平板电脑中的手指)时,我们会在左边(第一个项目)的左侧获得白色“背景”(mb偏移) ,(最后一项)。' 只是正常的Manipulation操作。您可以在CarouselPanel.cs中看到这些操作。

要实现目标,您需要在OnManipulationDelta中进行判断,如果所选项目是第一项或最后一项,则可以像下面这样终止操作:

internal void OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
    var previousIndex = Carousel.SelectedIndex;
    var delta = Carousel.Orientation == Orientation.Horizontal ? e.Delta.Translation.X : e.Delta.Translation.Y;
    if ((previousIndex == 0 && delta>0)||(previousIndex==Children.Count-1 && delta<0))
    {
        return;
    }
    ........
}

上面的代码只是我的简单实现,如果您认为它对您不利,则可以自己更改。

然后,当您在Windows Community Toolkit中更改源代码时,您将必须为其编译自定义版本,并在项目中添加对该版本的引用。