我想实现一个日历样式(基于日期)无限FlipView
用户可以通过触摸滚动。我将FlipView
的ItemTemplate
与自定义ObservableCollection
绑定在一起。一切都很好地显示,我操纵ObservableCollection
提供所需的行为:当选定的索引更改时,将新元素添加到顶部并从底部删除。无限滚动翻转Flipview在翻转时更新内容
private void OnIndexChanged(object sender, SelectionChangedEventArgs e)
{
//Works great on slow swiping with pauses, no offset artifacts
DataGroup.OnIndexChanged(GroupFlip.SelectedIndex);
}
问题是,当用户停止滚动FlipView
将只触发SelectedIndex
更改事件。对于小型刷卡来说,这很好,但用户可以轻松到达集合的末尾,并在收集更新之前走到死胡同。
我已成功订阅了FlipView
内ScrollViewer
的[Viewchanged][1]
,如建议here和我能够看到和使用的HorizontalOffset
来计算新的索引偏移和操作集合。
问题是,在此事件中操纵集合时,根据用户和集合的操作类型,FlipView
以各种方式跳转。
InnerFlipper.ViewChanged += OnSoftScroll;//InnerFlipper is caught from the `VisualHelperTree`
private void OnSoftScroll(object sender, ScrollViewerViewChangedEventArgs e)
{
(...)
double UpperMargin = ScrollableSize - Offset;//Value is reliable
if (UpperMargin < ViewObservableSize)
{
DataGroup.OnIndexDelta(1);
}
(...)
}
我试着忽略一些事件,以避免双重触发,迫使新HorizontalOffset
基于指数变化的计算值的多种组合和真正水流偏移等没有给出一个透明的结果,这是一个无缝无限滚动。
任何想法如何避免工件,处理这个事件,甚至其他方式来实现以达到预期的结果?
你有这方面的一个例子吗? –
一个例子会很棒!我也在为这个寻求解决方案.. – SeBo
添加例子来回答。 – MoDu