4

私のWP8アプリでは、LongMultiListSelectorスクロール位置を保存し、後でその位置にスクロールできるようにする機能を実装しようとしています(たとえば、墓石を投げた後)。それはかなりの探求であることがわかりました、そして、いくらかの進歩にもかかわらず、私はまだ質問があります。

私は今それを理解しているので、これが機能するためには次のものが必要になります:

  1. 明らかに、私が現在持っている特定のアイテムにスクロールする機能。LongMultiListSelector、の拡張であるにもかかわらず、メソッドLongListSelectorはありませんが、のビジュアルツリーにあり、それが私が行ったことです)。ScrollToLongListSelectorLongMultiListSelector

    1.1。アニメーションで指定されたアイテムにスクロールする機能。これはまだ解決していません。それはそれほど重要ではありませんが、それを持っているといいでしょう。いくつか検索したところ、かつてLongListSelectorAnimateToメソッドがあったが、現在はないことがわかりました。

  2. LongListSelector現在画面に表示されているアイテムを確認できるため、これらの表示されているアイテムの1つのインデックスを保存して、そこまでスクロールできます。これもまだ解決していないのでとても重要です。

    いくつか検索した後、私はこの質問を見つけました:WP7 Toolkit UpdateはLongListSelectorからGetItemsInView()を削除しました。昔LongListSelectorGetItemsInView機能があり、後は特にこの目的のためのイベントがあったLinkと言われています。Unlink現在LongListSelector、これらのオプションはありません。

    それで、主な質問は、目に見えるアイテムを見つけるために今何をすべきかということLongListSelectorです。

4

2 に答える 2

4

現在、どのアイテムが表示されているかを簡単かつ直接的に見つける方法はないようです。幸いなことに、すべてが失われるわけではありません。と の両方がScrollBar、実行時に のビジュアル ツリーに表示されます。LongListSelectorLongListSelector

LongListSelectorScrollToそのメソッドには必要であり、取得できるイベントと、それぞれコントロールの高さと現在のオフセットであるイベントがScrollBar必要です。ここでも問題は、おそらくの仮想化と、一度にすべての項目が表示されないという事実のために、これら 2 つのプロパティが常に正しく計算されるとは限らないことです。良いことは、負の距離 (最大 - 値、リストの最後からのオフセット) は相対的ではありますが、常に正しいことです。ValueChangedScrollBar.MaximumScrollBar.ValueLongListSelector

したがって、実際の高さを手動で計算できる場合はLongListMultiSelector、その実際の高さと負の距離を使用してスクロール管理が可能になります。私の場合、すべてのアイテムが同じ高さなので簡単でした。

于 2013-02-05T07:58:42.990 に答える
0

能力の答えアニメーションで特定の項目にスクロールするには:

この記事が役に立ちます。

主なアイデア: ScrollViewerVerticalOffset Propertyは読み取り専用としてマークされています。したがって、VerticalOffset をアニメーション化するのに役立つシェル クラスを作成できます。

于 2013-08-07T12:45:41.083 に答える