0

多くのオブジェクトをロードするアプリケーションにリストボックスがあるため、ItemsSource プロパティへの非同期バインディングを使用して UI をブロックしません。

私の問題は、ItemsSource、つまり非同期バインディングが(ListView.ScrollIntoView()メソッドで)ロードされたときに、選択したアイテムまでスクロールしたいということです。

誰かがこれに対する解決策を知っていますか? または、この目的に適したタイミングで発生する ListView のどのイベントを使用する必要がありますか?

4

2 に答える 2

0

ああ、私は解決策を見つけました!LisBox には、SelectionChanged というイベントがあります。SelectedItem はバインドによってリストボックスに設定され、フォントの非同期リストが読み込まれると、選択されたアイテムが UI で選択されるため、このイベントが発生するため、このイベントは問題ありません。

このイベントで ScrollIntoView() を呼び出すと、正しく動作します。この動作は、フォント ファミリが読み込まれたときにのみ必要なので、選択した項目までリスト ボックスをスクロールした直後に、このイベントの登録を解除します。

于 2015-06-30T14:01:17.320 に答える
0

多分これはうまくいくでしょう...名前をListView付けた場合myListView、アイテムが変更されるたびに確認し、選択したアイテムをビューにスクロールできます。

myListView.ItemContainerGenerator.ItemsChanged += new ItemsChangedEventHandler(ItemContainerGenerator_ItemsChanged);

イベント ハンドラー:

void ItemContainerGenerator_ItemsChanged(object sender, ItemsChangedEventArgs e)
{
    if (myListView.SelectedItem != null)
    {
        myListView.ScrollIntoView(myListView.SelectedItem);
    }
}
于 2015-06-30T13:13:03.170 に答える