Xaml FlipView SelectionChanged事件仅在触摸操作完成时发生
从: 请注意,当用户使用触摸浏览FlipView内容时 交互时,仅当触摸时才会发生SelectionChanged事件 操作已完成。这意味着当用户浏览 内容快速,个人选择更改的事件并不总是 为每个项目生成,因为操作仍在发生Xaml FlipView SelectionChanged事件仅在触摸操作完成时发生,xaml,windows-phone-8.1,windows-8.1,flipview,Xaml,Windows Phone 8.1,Windows 8.1,Flipview,从: 请注意,当用户使用触摸浏览FlipView内容时 交互时,仅当触摸时才会发生SelectionChanged事件 操作已完成。这意味着当用户浏览 内容快速,个人选择更改的事件并不总是 为每个项目生成,因为操作仍在发生 是否有方法将FlipView控件配置为为为每个翻转触发SelectionChanged?此行为使实现分页变得有趣,因为用户如果翻转足够快,可以在添加更多项目之前翻转到列表的末尾。解决此问题的一个方法是扩展FlipView并监视其ScrollViewer。下面是我建议的一个快速
是否有方法将
FlipView
控件配置为为为每个翻转触发SelectionChanged
?此行为使实现分页变得有趣,因为用户如果翻转足够快,可以在添加更多项目之前翻转到列表的末尾。解决此问题的一个方法是扩展FlipView
并监视其ScrollViewer
。下面是我建议的一个快速示例。似乎在水平翻转视图上工作(没有处理任何其他情况,也没有进行过太多测试)
需要注意的一些事项:
SelectedIndex
属性,这会引发SelectionChanged
事件,但它也很可能做其他事情,因此在某些情况下可能会出现问题我不知道这是这么简单。我已经测试过了,只要稍作调整,它就可以工作了。谢谢。回答得好!但是我认为在自定义控件的
OnApplyTemplate
@DerekBeattie中按名称获取模板子项(ScrollViewer)是很常见的。你能在这里添加你的“调整”吗?@kubakista我仍在努力使它以某种方式工作,这个解决方案允许每次翻转都触发一个事件,我现在的问题是:@DerekBeattie:btw:您知道通过“上一个/下一个”按钮进行导航不起作用吗?
public class FixedFlipView : FlipView {
public ScrollViewer ScrollViewer {
get;
private set;
}
protected override void OnApplyTemplate() {
base.OnApplyTemplate();
this.ScrollViewer = (ScrollViewer)this.GetTemplateChild("ScrollingHost");
this.ScrollViewer.ViewChanged += ScrollViewer_ViewChanged;
}
void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) {
var index = (int)this.ScrollViewer.HorizontalOffset - 2;
if (this.SelectedIndex != index) {
this.SelectedIndex = index;
}
}
}