4

UI 実装の課題があります (少なくとも私にとっては)。無限にループする 3 つのペインのスクロール ビューが必要です。ユーザーがペイン 2 からペイン 3 に右にスワイプすると、ペイン 1 まで右にスクロールし続け、ペインを無限に繰り返すことができる必要があります。一度に 1 つの完全なペインのみが表示されます。ぶら下がっているエッジはありません。

このようなもの: 3 ペイン パノラマ

私が見つけたすべての例は、データバインディングとビューモデルを備えた非常に精巧で、一般的にリストボックス/ビューに基づいています。それほど洗練されたものは必要ありません。3 つのペインは動的ではなく、常に 3 つです。

ペイン 1 とペイン 3 (以前の要件を満たしていた) の間のみを前後にスクロールする現在の実装は、MSDN WinRT コントロールの例に従います。

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

タッチ エクスペリエンスがあり、コンテンツがユーザーの指に追従し、スクロール中に表示されるため、これは問題なく機能します。

これまでの私の考えは次のとおりです。

  • 「開始」と「終了」に別のグリッドを追加します
  • スクロール中の水平オフセットの把握
  • パネルの途中で、「最後の」ペインの内容を「次の」ペインにコピー/挿入します

しかし、これが機能するかどうかはわかりません。また、全体的にどうすればよいかわかりません。ポイントを理解して使いやすさをテストするためだけに非常に単純なものを探していますが、C#/XAML (Windows ストア アプリ) で実際に機能する必要があります。だから私は賢明な人々に提案を求めています。

4

2 に答える 2

1

ScrollViewerはループせず、スクロール可能なコンテンツ内のビュー ポートの位置を示すスクロール バーまたはインジケーターがあるため、使用しないでください。AFlipViewはもう少しうまく機能しますが、ループもサポートしていません。私がお勧めする解決策は、単純に最初から実装することです。すべてのパネルをパネルCanvasと同じサイズの に配置し、パネルからのイベントを処理し (ヒット テストを成功ManipulationDeltaさせるには、少なくとも と を指定する必要があります) 、イベント引数から取得してパネルの位置を更新するようにパネルを呼び出します。ポジションが下に行く場合は追加Transparent BackgroundManipulationMode="TranslateX,TranslateInertia"Canvas.SetLeft(panel)e.Delta.Translation.X-panel.ActualWidth3 * panel.ActualWidthそれを超える場合は、その金額を差し引きます。個人的にはマウスドラッグ操作を維持したいのですがe.PointerDeviceType == PointerDeviceType.Mouse、コントロールに明示されているときに操作イベントを除外することにした場合は、マウスでアイテムを反転できるようにするボタンも追加してください。FlipView

于 2013-04-16T18:25:55.637 に答える