如何使用滑动动画以编程方式在FlipView中导航

时间:2014-01-23 10:21:28

标签: windows-store-apps winrt-xaml windows-8.1

Windows开发人员中心说明了UseTouchAnimationsForAllNavigation属性:

  

XAML FlipView控件支持三种导航模式;基于触摸,基于按钮和程序化。当用户通过触摸进行导航时,FlipView项目可以平滑地滚动到视图中。将此属性设置为true时,无论导航是基于触摸的,基于按钮还是编程导航,都会出现相同的导航动画。

我正在通过分配FlipView的SelectedItem属性来浏览我的页面代码:

FlipView.SelectedItem = FlipView.Items.Last();

但是,滑动动画不会显示。我该如何启用它?

5 个答案:

答案 0 :(得分:11)

与此同时,我能够解决这个问题。我有一个按钮,可以触发导航到下一个FlipViewItem。然而,此按钮被放置在FlipViewItem中。

使用我的设置(触摸设备),没有任何事情发生。然后我尝试用鼠标点击按钮,它工作。禁用UseTouchAnimationsForAllNavigation后,它也可以使用触摸输入。在我的测试中,我将按钮放在FlipView之外,它确实可以使用动画。

问题在于:点击按钮时,导航动画尝试启动(SelectedIndex设置正确),但因为用户仍然触摸按钮来阻止动画,因此停止了。因此,导航将被取消,SelectionChanged会报告当前页面。

解决方案是将Button的ManipulationMode设置为All。之后,触摸按钮时无法翻转FlipViewItem,但动画会执行,并且它就像魅力一样。

答案 1 :(得分:3)

我以不同的方式解决了同样的问题。正如Chliebel所说,这是因为你的手指仍然触摸控制,所以flipview无法动画。所以我在导航之前做了一个小小的休息。当用户释放手指时,它会起作用!!!

        await Task.Delay(100);
        flipView.SelectedIndex += 1;

答案 2 :(得分:0)

对我而言,ChristiaanV的回答有所帮助:

  

动画仅在您导航到上一个或下一个项目时发生   在FlipView中。

所以我设置了一个while循环来将所选索引设置为上一个/下一个索引,直到我到达所需的页面。

示例代码:

如果您想要访问第一页:

while(flipView.SelectedIndex > 0)
{
    flipView.SetValue(FlipView.SelectedIndexProperty, flipView.SelectedIndex - 1);
}

答案 3 :(得分:0)

这是我找到的一个紧凑的解决方案,类似于Bhawk1990:

//nb is the index you wish to get to.

if (nb > flipview.SelectedIndex)
    while (flipview.SelectedIndex != nb)
        flipview.SelectedIndex++;
else if (nb < flipview.SelectedIndex)
    while (flipview.SelectedIndex != nb)
        flipview.SelectedIndex--;

答案 4 :(得分:-2)

我在UseTouchAnimationsForAllNavigation="True"编程时更改FlipView所选项目时花了几天时间弄清楚为什么触摸动画不起作用。

我找到了一个控制动画机器的设置。不知何故,此设置已被禁用:

Settings->Visual options->Play animations in Windows