Windows开发人员中心说明了UseTouchAnimationsForAllNavigation
属性:
XAML FlipView控件支持三种导航模式;基于触摸,基于按钮和程序化。当用户通过触摸进行导航时,FlipView项目可以平滑地滚动到视图中。将此属性设置为true时,无论导航是基于触摸的,基于按钮还是编程导航,都会出现相同的导航动画。
我正在通过分配FlipView的SelectedItem
属性来浏览我的页面代码:
FlipView.SelectedItem = FlipView.Items.Last();
但是,滑动动画不会显示。我该如何启用它?
答案 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