Если вы находитесь на A и B и C еще не показаны, у них нет активных подписки на какие-либо события. Следовательно, они не будут получать события.
Также вы не можете положиться на этот шаблон, если хотите, чтобы это работало, например, на Android.
Вместо этого я бы рассмотрел возможность использования Сервиса, который является простым разрешимым синглетом, где вы можете хранить вещи, и пусть в ViewModels есть эта служба, введенная в ctor.
Что-то вроде этого:
public interface IMyService
{
string Data { get; set; }
}
public class MyService : IMyService
{
public string Data { get; set; }
}
Затем в ViewModel для А:
public class AViewModel : MvxViewModel
{
public AViewModel(IMyService service)
{
GoToBCommand = new MvxCommand(() => {
// set data before navigating
service.Data = SomeData;
ShowViewModel<BViewModel>();
});
}
public ICommand GoToBCommand { get; }
}
ViewModel для View B:
public class BViewModel : MvxViewModel
{
private readonly IMyService _service;
public BViewModel(IMyService service)
{
_service = service;
}
public void Init()
{
// read data on navigation to B
var data = _service.Data;
}
}
В качестве альтернативы, если вы только прохождение небольшие значения, такие как Id, вы можете использовать запрос pa араметры:
ShowViewModel<BViewModel>(new { id = SomeProperty });
Тогда в ВМ:
public void Init(string id)
{
// do stuff with id
}