我想實現一個日曆樣式(基於日期)無限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