いつ
DomainDataSourceView.MoveCurrentToNext()
と
DomainDataSourceView.MoveCurrentToPrevious()
不特定の順序で数回呼び出される DomainDataSourceView は、CurrentItem がコレクションからランダムなアイテムに絶えず変化するある種のループに巻き込まれます。停止する唯一の方法は、Silverlight アプリケーションを閉じることです。これは既知の問題ですか?
これは、Silverlight mvvm アプリケーションでの呼び出しの順序です。
- ボタンがクリックされた
- ボタンにバインドされた RelayCommand は、canexecute メソッドを起動します (true を返します)。
- コマンドのメソッドが実行され、DataView.MoveCurrentToNext() が呼び出されます。
- RaiseCanExecuteChanged メソッドは、最初 - 戻る - 次 - 最後のボタン コマンドに対して呼び出されます (すべて false を返します)。
- ビューモデルの CurrentEntity プロパティは、ドメイン データ ソースの現在のアイテムに変更されます
- 一部のデータは、現在のエンティティに対して非同期で読み込まれます
次のボタンを数回すばやくクリックすると、ループが開始されます。クリックの間隔が多少広い場合は問題ありません。
最初のクリックをまだ処理している間に MoveCurrentToNext が再度実行されるようです。ブレークポイントを使用してデバッグする場合、これは決して起こりません。ループ中にすべてのメソッドに追加されたブレークポイントがヒットすることはありません。これを修正する方法、またはこれを引き起こす可能性のあるものを知っている人はいますか?