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

Windows store apps 如何使用滑动动画以编程方式在FlipView中导航,windows-store-apps,winrt-xaml,windows-8.1,Windows Store Apps,Winrt Xaml,Windows 8.1,Windows开发中心声明有关UseTouchAnimationsForAllNavigation属性的信息: XAML FlipView控件支持三种导航模式;基于触摸、基于按钮和编程。当用户通过触摸导航时,FlipView项目会平滑地滚动到视图中。将此属性设置为true时,无论导航是基于触摸、基于按钮和编程的,都会出现相同的导航动画 我目前正在通过指定FlipView的SelectedItem属性从页面的代码隐藏中导航: FlipView.SelectedItem = FlipView.Ite

Windows开发中心声明有关
UseTouchAnimationsForAllNavigation
属性的信息:

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

我目前正在通过指定FlipView的
SelectedItem
属性从页面的代码隐藏中导航:

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

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

同时,我解决了这个问题。我有一个按钮,可以触发到下一个FlipViewItem的导航。但是,此按钮被放置在FlipViewItem中

在我的设置(触摸设备)下,什么都没有发生。然后我试着用鼠标点击按钮,结果成功了。在我禁用
使用TouchAnimationsforAllNavigation
后,它还可以使用触摸输入。在我的测试中,我将按钮放置在FlipView的外部,并使用动画进行操作

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


解决方案是将按钮的
操作模式
设置为
All
。之后,触摸按钮时不能翻转FlipViewItem,但动画会执行,效果很好。

对于我来说,ChristiaanV的回答很有帮助:

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

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

示例代码: 如果您想进入第一页:

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

我用不同的方法解决了同样的问题。正如Chliebel所说,这是因为您的手指仍在触摸控件,因此flipview无法设置动画。所以我在航行前休息了一会儿。当用户释放手指时,它就能工作了

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

我发现了一个类似于20世纪90年代的紧凑解决方案:

//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--;
//nb是您希望访问的索引。
如果(注意>flipview.SelectedIndex)
同时(flipview.SelectedIndex!=nb)
flipview.SelectedIndex++;
else if(注意
我花了几天的时间,在
使用TouchAnimationsforallNavigation=“True”
时,以编程方式更改FlipView所选项目,弄明白了为什么触摸动画不起作用

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

Settings->Visual options->Play animations in Windows

不确定这是否有帮助,但我的经验是,当您选择selecteditem旁边列表中的项目时,只有平滑导航动画才会出现。我已经尝试过了。如何导航到下一个项目?在我的例子中,我有一个显示所有项目的缩略图列表,当我选择当前selecteditem旁边的缩略图时,它将与动画一起导航,如果我选择了比selecteditem更远的一个,它只会出现在屏幕上,没有任何动画。您可以共享触发导航的代码吗?var index=dataContext.ProductDetails.Media.IndexOf(Media);ImageFlipView.SelectedIndex=索引;嗯,这会触发回动画,所以这不是期望的行为。但这是个好主意!仅供参考,所有可能遇到此问题的人:这仍然适用于Windows 10通用应用程序。谢谢!完美解决方案:)