繁体   English   中英

MvvmCross - 使用参数Xamarin.iOS导航到ViewModel

[英]MvvmCross - navigate to ViewModel with parameters Xamarin.iOS

我希望能够在收到推送通知(因此应用程序最初没有运行)之后导航到ViewModel,同时向其发送一些参数。

我能够通过在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
    } 
}

您可以传入参数字典(键属性名称和值)。 https://github.com/MvvmCross/MvvmCross/blob/4.0/MvvmCross/Droid/Droid/Views/MvxChildViewModelOwnerExtensions.cs

在init方法中,属性将使用字典中的值填充。 唯一的要求是可以在字典中找到init方法中的名称作为键。

所以来自VM的以下init方法。

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

通过传入这本词典填写:

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

这只是其中一个选项..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM