извините за мой поздний ответ.Спасибо за ваш совет и пример.Я решил свою проблему с помощью следующего кода.Я использую библиотеку Prism с IEventAggregator
Мой сервис
internal sealed class ApplicationService
{
private ApplicationService() { }
private static readonly ApplicationService _instance = new ApplicationService();
internal static ApplicationService Instance { get { return _instance; } }
private Prisms.IEventAggregator _eventAggregator;
internal Prisms.IEventAggregator EventAggregator
{
get
{
if (_eventAggregator == null)
{
_eventAggregator = new Prisms.EventAggregator();
}
return _eventAggregator;
}
}
, затем мой первый ViewModel, который опубликует SelectAirport
public class AirportViewModel : INotifyPropertyChanged
{
protected readonly IEventAggregator eventAggregator;
public AirportViewModel(IEventAggregator EventAggregator)
{
//Liste des aéroports a suivre
Airports = new ObservableCollection<AirportModel>(GetData.GetAirportData());
//Clique sur un aéroport
GetAirportIdCommand = new RelayCommand(GetAirportIdExecute,GetAirportIdCanExeucte);
#region Telechargement météo
GetAllWeather GetAllWeather = new GetAllWeather(Airports);
#endregion
this.eventAggregator = EventAggregator;
}
//Property SelectAirport
public AirportModel SelectAirport
{
get { return selectAirport; }
set
{
selectAirport = value;
//Publish the property SelectAirport
eventAggregator.GetEvent<AirportSelectedEvent> ().Publish(selectAirport);
OnPropertyChanged("SelectAirport");
}
}
}
, затем мой второй ViewModel, который получит SelectAirport
public class NotamViewModel : INotifyPropertyChanged
{
protected readonly IEventAggregator _eventAggregator;
public NotamViewModel(IEventAggregator ea)
{
_eventAggregator = ea;
_eventAggregator.GetEvent<AirportSelectedEvent>()
.Subscribe((_selectAirport) =>
{
this.SelectAirport = _selectAirport;
});
}
}
И, наконец, мой AirportSelectedEvent
public class AirportSelectedEvent : PubSubEvent<AirportModel>
{
}
Я надеюсь, что он может помочь вам в случае необходимости.
Скоро увидимся с множеством других вопросов в WPF
Сирил