2012-05-07 6 views
0

たとえば、itemsSourceが依存関係プロパティにバインドされたコンボボックスがあるとします。バインドされたリストの値は、多くの要因によって変わります。これらの値を計算するには時間がかかりませんので、必要がない限りアプリケーションがコレクションを更新しないようにします。ビューにデータが必要なとき(つまりコンボボックスがドロップダウンしているとき)にのみ、バインドされたプロパティを「遅延して」更新するMVVMの正しい方法は何ですか?必要に応じて、変更時ではなくビューでDPを更新する

class ViewModel { 
    public void Refresh() { 
     // ... 
    } 

    // ... 
} 

を...と、必要なときに、あなたのコントロールでそれを呼び出す:

答えて

1

私はViewModelにメソッドを追加します。

class Control : UserControl { 
    private ViewModel ViewModel = new ViewModel(); 

    void OnDropDown() { 
     ViewModel.Refresh(); 
    } 

    // ... 
} 
+0

ありがとうございました。私はそれに向かって傾いています。 OnDropDown msdnリファレンスは、イベントがトリガーされたときに「When」と言っていません。ドロップダウンの前または後にドロップダウンがあるかどうか知っていますか? previewDropDownイベントはありません。 –

+0

@ach - わかりませんが、代わりにMouseDownイベントをキャプチャできます。 – ken

1

ViewModelは、画面上のすべてのバインドされたデータを認識する必要があります。そのため、あなたのビューモデルは何とかドロップダウンのデータを取得します。

通常、フェッチをトリガーするのは、通常はボタンクリックや他のビューイベントから来るViewModelの「コマンド」です。

関連する問題