2016-12-14 88 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} 
} 

这仅仅是其中的一个选项..

相关问题