Вы можете использовать Event Aggregator для связи между LoginViewModel и ShellViewModel. Вы можете прочитать больше об Event Aggregator здесь.
Во-первых, вам нужно создать класс сообщений
public class AuthenticationSuccessMessage
{
public bool IsValidLogin{get;set;}
}
Затем следующим шагом будет использование EventAggregator для уведомления ShellViewModel из LicenseViewModel.
private IEventAggregator _eventAggregator;
public LicenseViewModel (IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
}
public void Login()
{
_eventAggregator.PublishOnUIThread(new AuthenticationSuccessMessage{IsValidLogin=true});
}
Последний шаг - подписка на события в ShellViewModel.
public class ShellViewModel:Screen, IHandle<AuthenticationSuccessMessage>
{
private readonly IEventAggregator _eventAggregator;
public ShellViewModel:Screen(IEventAggregator eventAggregator) {
_eventAggregator = eventAggregator;
_eventAggregator.Subscribe(this);
}
void Handle<AuthenticationSuccessMessage>(AuthenticationSuccessMessage message)
{
if(message.IsValidLogin)
{
// Do Task
}
}
}
Подробнее об агрегаторах событий можно прочитать здесь .
Обновление : не забудьте подписаться на агрегатор событий в ShellViewModel.