0

searchResultsページのLoadedイベントで リストを作成しています。

この読み込みに 50 ミリ秒かかる場合、ページに戻ってページを読み込むとsearchResults、バインドが完了する前に、ほんの数秒前のページが表示されます。

a) ページが表示される前に、どのイベントでコントロールをバインドできますか? (ページはナビゲートされているため、コンストラクターは再度呼び出されません。)

b) Loaded イベント コードでバインディングを強制的に発生させる方法はありますか? list1.ItemSource=xイベント関数が範囲外になった後にバインディングが行われているように見えることに気付きました。あたかも OnIdle で行われたかのように。

b) の詳細

次のコードを実行すると:

(ItemsControl) lstSearchResults.ItemSource = searchResults;
int iCount = lstSearchResults.Items.Count

iCountにアイテムがあるかどうかに関係なく、ゼロになりますsearchResults

すぐに入力されるようにバインドする方法はありlstSearchResultsますか?searchResults

4

2 に答える 2

1

1) DataContext を viewModel に関連付け、UI 自体にリストをバインドします。ItemsSource={Binding searchResults}"

2) Loaded イベントでlstSearchResults.ItemSource = searchResults;

リストが動的である場合は、リストを次のようにすることをお勧めします。ObservableCollection

searchResults が可変の高さのアイテムである場合、ItemTemplate. この問題に取り組むには、既に ListBox コントロールの一部である Virtualizing StackPanel を使用する必要があります。したがって、すでにリストボックスを使用している場合、問題が発生する可能性はほとんどありません。詳細については、このリソースを参照してください。お役に立てば幸いです。

于 2012-09-26T09:33:03.200 に答える
0
  1. OnNavigatedToイベントが呼び出されているので、そこで作業を試すことができます
  2. 意味が完全にはわかりませんが、監視可能なコレクションとリストボックスの間で既にバインドを行っている場合は、監視可能なコレクションに加えた変更がリストボックスに反映されます。
于 2012-09-25T18:45:38.793 に答える