Я думаю, что одной из альтернатив является создание собственного «сообщения» для использования только в связи с желаемой функциональностью. Например, объявите CarSelectedMessage
и затем вместо использования широковещания по умолчанию PropertyChangedMessage<Car>
создайте и отправьте пользовательское сообщение из модели представления:
public Car SelectedCar {
get { return _selectedCar; }
set {
_selectedCar = value;
RaisePropertyChanged("SelectedCar");
var msg = new CarSelectedMessage(value);
Messenger.Default.Send(msg);
}
}
По навигации вообще
Для реализации навигации в приложении я следовал этой записи блога , чтобы упростить выдачу запросов на навигацию из моделей представлений. Я думаю, что его нужно было немного обновить для последней версии MVVM Light, см. Мою версию ниже.
Новый NavigationRequest
класс для использования в качестве сообщения:
public class NavigationRequest
{
public NavigationRequest(Uri uri)
{
DestinationAddress = uri;
}
public Uri DestinationAddress
{
get;
private set;
}
}
Регистрация запросов в конструкторе основного вида приложения:
Messenger.Default.Register<NavigationRequest>(this,
(request) => DispatcherHelper.CheckBeginInvokeOnUI(
() => NavigationService.Navigate(request.DestinationAddress)));
Наконец, для вызова навигации из модели вида
var uri = new Uri("/MyPage.xaml", UriKind.Relative);
Messenger.Default.Send(new NavigationRequest(uri));
Надеюсь, это поможет,