1

MVVMLight フレームワークの使用を開始していますが、ViewModel のプロパティへのバインドについて質問があります。ビューを更新するには、プロパティのセッターで RaisePropertyChanged メソッドを呼び出す必要があることがわかりました。そして、ディスパッチャーを介して RaisePropertyChanged を呼び出す必要があります。そうしないと、スレッド アクセス エラーが発生します。

    public string Lat { get { return _lat; } set
    {
        _lat = value;
        Deployment.Current.Dispatcher.BeginInvoke(() => RaisePropertyChanged("Lat"));
    } }

これは機能しますが、自動バインド プロパティを取得するためのコードが多くなります。これをよりきれいに処理するヘルパーはありますか?

4

1 に答える 1

3

MVVM Light を使用しているかどうかに関係なく、UI 要素をモデル クラスのプロパティにバインドする場合は、PropertyChanged イベントの発生が必須です。実際、MVVM Light を使用すると RaisePropertyChanged メソッドが提供されるので簡単です。それ以外の場合は、自分でコーディングする必要があります。:)

Dispatcher.BeginInvoke() の使用は、UI スレッドとは異なるスレッドからプロパティの set アクセサーを呼び出すことができる場合にのみ必要です。それ以外の場合は、RaisePropertyChanged を直接呼び出しても問題ありません。

于 2010-06-13T20:26:20.407 に答える