MVVMでWPF/C#を使用するアプリケーションで作業しています。私はListBox
に縛られている1つの特定のObservableCollection<>
を持っています。
OnStartup()を呼び出すと、すべてのWPFバインディングが機能することが保証されていますか?
シナリオ1:アプリケーションが実行されている場合、私はこのObservableCollection<>
を変更し、ListBox
期待通りに移入されます。
シナリオ2:新しい要件では、このリストボックスにデフォルトでいくつかの初期値を入力する必要があります。そこで私はViewModelで初期化するためのメソッドを追加しました。 View & ViewModelを初期化した後、このメソッドをOnStartup()で呼び出します。 DataContextも適切に設定されます。このシナリオでは、値はObservableCollection <で更新されますが、残念ながらListBoxには反映されません。
OnStartup()に何か問題がないかどうかを確認するために、OnStartup()の代わりにViewからContentRenderedのコールバックに同じメソッド呼び出しを追加しました。
私の質問正確にMVVMがすべてのバインディングが正しく設定されていることを保証するのはいつですか?
編集: つ以上の観測私はメッセージ/ダイアログのリストボックスを開く場合に予想されるとして、移入されます。 ContentRenderedコールバックを呼び出します。そして、それは正しく挿入されます。
私はContentRenderedがバインディングを保証する関数であることをほとんど確信しています。
返信いただきありがとうございます。プロパティは既に空の 'ObservableCollection'で初期化されています。私が理解しようとしている問題は、同じことが通常のユースケースではうまくいきます。それはちょうど出発点です。私はいくつかの詳細を編集して追加しました。 –
vrrathod