2013-04-16 56 views
4

我有一個用戶界面實施挑戰(至少對我來說)。需要的是3個窗格的滾動視圖,這個視圖會無休止地循環:當用戶從窗格2向右滑動到窗格3時,他們應該能夠保持滾動到窗格1的右側,並通過窗格繼續滾動,無限重複。一次只顯示一個完整窗格 - 沒有懸掛邊緣。3窗格循環滾動面板 - 建議

事情是這樣的: 3 pane panorama

所有我發現的例子是非常複雜的,與數據綁定和的ViewModels,一般是根據列表框/人次。我們不需要任何複雜的東西:我們的3個窗格不是動態的,並且總是有3個。我們當前的實現僅在pane1和pane3之間來回滾動(滿足前面的要求),它遵循MSDN WinRT的控制例如:

<ScrollViewer> 
    <StackPanel> 
    <Grid /> <!-- pane1 --> 
    <Grid /> <!-- pane2 --> 
    <Grid /> <!-- pane3 --> 
    </StackPanel> 
</ScrollViewer> 

這工作得很好,只要它去,因爲我們有觸控體驗,內容跟隨用戶的手指,是可見的,而他們滾動。

我的想法到目前爲止是:

  • 在「開始」和「結束」
  • 再添電網搞清楚水平偏移,而一旦中途滾動
  • 通過面板,複製/插入'最後'面板內容插入'下一個'窗格

但我不知道這是否會起作用,總體而言我不知道該怎麼做。我們正在尋找一些非常簡單的事情來簡化測試和可用性測試,但它必須在C#/ XAML(Windows應用商店應用)中真正起作用。所以我在向更聰明的人提出建議。

+0

你想只顯示一次一個,或者不顯示面板的兩側顯示在左邊和右邊一點? – SomeRandomDeveloper

+0

只有當前窗格完全顯示。側面沒有前緣。觸摸和看到內容滾動是必要的,所以FlipView不起作用。修正的問題。 – dex3703

回答

0

檢查: Create a custom ItemsPanel for an ItemsControl

它descibes創建兩個ItemsPanel:第一個將生成的所有項目一個圓,第二個會產生一個無限循環列表。

+0

謝謝 - 這看起來像一個具有更多開發技能的人可以開始。我們還需要爲滾動添加捕捉點。 – dex3703

1

,因爲它不循環,並有滾動條或指標顯示在滾動內容視圖口位置,則不應使用ScrollViewer。 A FlipView會更好一些,但它也不支持循環。我建議的解決方案是簡單地從頭開始實施。把所有的面板在Canvas,其大小與面板相同,從面板處理ManipulationDelta事件(你需要給他們至少TransparentBackground成功命中測試和ManipulationMode="TranslateX,TranslateInertia"),並調用Canvas.SetLeft(panel)面板上通過更新其位置e.Delta.Translation.X取自事件參數。如果頭寸低於-panel.ActualWidth,請加上3 * panel.ActualWidth,如果超過 - 減去該金額。請務必也添加按鈕,以使用鼠標翻轉的項目,如果你決定要過濾掉操縱事件時e.PointerDeviceType == PointerDeviceType.Mouse作爲FlipView控制表現,雖然我個人更喜歡保持鼠標拖動操縱。