[英]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.