モジュールの ViewModel 間の疎結合通信に Prism の EventAggregator を使用しています。ViewModelAにいくつかのプロパティ (FirstName、LastName など) があり、値が変更されたときにViewModelBのプロパティを更新する必要があります。私の現在の解決策は次のとおりです。
ViewModelAは、FirstName の新しい値をペイロードとしてイベントを発行します。
public string FirstName
{
get {return firstName;}
set
{
this.firstName = value;
eventAggregator.GetEvent<PatientDetailsEvent>().Publish(firstName);
}
}
ViewModelBは Event にサブスクライブされ、それに応じて FirstName プロパティを変更します。
public PatientBannerViewModel(IEventAggregator eventAggregator)
{
this.eventAggregator = eventAggregator;
eventAggregator.GetEvent<PatientDetailsEvent>().Subscribe(UpdateBanner, ThreadOption.UIThread);
}
public void UpdateBanner(string firstName)
{
this.FirstName = firstName;
}
これは、単一のプロパティに対して正常に機能します。ViewModelBはViewModelAで変更されたプロパティがわからないため、複数の異なるプロパティでは機能しません。ViewModelB は新しい値が何であるかを認識していますが、どのプロパティを更新するかは認識していません。
プロパティごとに個別のイベントを作成できますが、これは繰り返しのようです。Event を 1 つだけ使用する方がきれいに見えます。理想的には、イベントを発行するときに、ViewModelA が ViewModelB に変更されたプロパティを通知する必要があります。これどうやってするの?