4

私はそれを機能させようとしてRaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast)いましたが、機能させることができませんでした。

私は実際のシナリオでは実装していませんが、それを学習するためだけに実装しています。通常の方法でブロードキャストを上げると、機能します Messenger.Default.Send<PropertyUpdateeMessage>(new PropertyUpdateeMessage("test"));

だから私は何を使うのに欠けているのだろうと思っています RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast)

前もって感謝します。

よろしくラキ

4

1 に答える 1

15

これも理解するのに少し時間がかかりました。基本的に、登録するメッセージと送信するメッセージを調整する必要がありますが、それに関するドキュメントはあまりありません。

ここに完全に機能するサンプルがありますが、簡単に言えば情報は次のとおりです。

まず、バス上を流れるタイプを指定する PropertyChangedMessage に登録します。

Messenger.Default.Register<PropertyChangedMessage<ObjectICareAbout>>(
    this,
    (action) => DispatcherHelper.CheckBeginInvokeOnUI(
                 () => DoWorkOnObject(action.NewValue) 
                )
);

次に、メイン VM のプロパティが変更されたときにメッセージを送信します。

RaisePropertyChanged(SelectedItemPropertyName, oldValue, value, true);

メッセージを送信し、それを聞くために登録するときに使用できる曖昧さ回避オプションがいくつかありますが、これが基本的な仕組みです。

于 2010-07-05T17:51:27.143 に答える