2017-01-26 4 views

答えて

0

AとBとCがまだ表示されていない場合、これらのイベントはアクティブなサブスクリプションを持つことはできません。したがって、彼らはイベントを受信しません。

また、Android上で動作させる場合は、このパターンに頼ることはできません。

代わりに、単純な解決可能なシングルトンであるサービスを使用することを検討します。ここでは、物事を保存し、ViewModelsにそのサービスが注入されるようにします。

このような何か:あなただけ渡している場合、代わりに

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; 
    } 
} 

public interface IMyService 
{ 
    string Data { get; set; } 
} 

public class MyService : IMyService 
{ 
    public string Data { get; set; } 
} 

そして、ビューAのためのあなたのViewModel内:ビューB用

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 Idのような小さな値、あなたはリクエストpaを使うことができますrameters:あなたのVMで次に

ShowViewModel<BViewModel>(new { id = SomeProperty }); 

public void Init(string id) 
{ 
    // do stuff with id 
}