gpt4 book ai didi

xaml - FlipView SelectionChanged事件仅在触摸操作完成时发生

转载 作者:行者123 更新时间:2023-12-04 03:51:18 24 4
gpt4 key购买 nike

docs:

Note When a user flips through FlipView content using touch interaction, a SelectionChanged event occurs only when touch manipulations are complete. This means that when a user flips through content quickly, individual SelectionChanged events are not always generated for every item because the manipulation is still occurring.



有没有一种方法可以配置 FlipView控件为每个翻转触发 SelectionChanged?这种行为使实现分页变得有趣,因为如果用户足够快地翻转,则可以在添加更多项之前翻转到列表的末尾。

最佳答案

解决该问题的一种方法是扩展FlipView并监视其ScrollViewer。这是我所建议的快速样本。似乎可以在水平翻转 View 中使用(没有处理任何其他情况,也没有进行过多测试)。

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;
}
}
}

注意事项:
  • 您可能希望以不依赖于其名称的另一种方式来获取ScrollViewer。就像在我的答案here中使用该方法一样。虽然,我想这也很好。
  • 为此,使用单独的事件可能是一个更好的主意。在上面的代码中,我设置了SelectedIndex属性,该属性引发SelectionChanged事件,但它也很有可能还会做其他事情,因此在某些情况下可能是个问题。
  • 关于xaml - FlipView SelectionChanged事件仅在触摸操作完成时发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27411729/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com