我希望能够在收到推送通知(因此应用程序最初没有运行)之后导航到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
}
}
答案 0 :(得分:0)
您可以传入参数字典(键 propertyName 和值)。 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}
}
这只是其中一个选项..