2016-12-14 72 views
0

我希望能夠在接收到推送通知(因此應用程序未初始運行)後向其中發送某些參數時導航到ViewModel。MvvmCross - 使用參數導航到ViewModel Xamarin.iOS

我能夠通過提取應用程序從AppDelegates「FinishedLaunching」中的推送通知開始顯示特定的ViewModel,但我似乎無法弄清楚在哪裏拾取參數發送。

[Register("AppDelegate")] 
public partial class AppDelegate : MvxApplicationDelegate 
{ 
    UIWindow _window; 

    public override bool FinishedLaunching(UIApplication app, NSDictionary options) 
    { 
     // Some irrelevant initialization code here 


     if (options != null) 
     { 
      if (options.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey)) 
      { 
       var viewDispatcher = Mvx.Resolve<IMvxViewDispatcher>(); 
       var request = MvxViewModelRequest.GetDefaultRequest(typeof(MyViewModel)); 
       request.ParameterValues = ((object)"someBooleanParameter").ToSimplePropertyDictionary(); 
       viewDispatcher.ShowViewModel(request); 
      } 
     } 

     return true; 
    } 
} 

我試圖在Init方法中的ViewModel中選取參數,但它似乎不起作用。

public class MyViewModel : MvxViewModel 
{ 
    public void Init(string parameters) 
    { 
     if (parameters.Equals("someBooleanParameter")) 
      // do something 
    } 
} 

回答

0

您可以在參數字典通(關鍵propertyName的,和值)。 https://github.com/MvvmCross/MvvmCross/blob/4.0/MvvmCross/Droid/Droid/Views/MvxChildViewModelOwnerExtensions.cs

在init方法中,屬性將填充字典中的值。唯一的要求是可以在字典中找到init方法中的名稱。

因此,您的虛擬機的以下init方法。

void Init (string name, string something else) { } 

通過將本詞典在得到填補:

new Dictionary<string, string> { 
     { "name", simpleRoute.Name }, 
     { "code",simpleRoute.Code} 
} 

這僅僅是其中的一個選項..

相關問題