在 MvxViewModel 中发送新参数在深度链接时从 IMvxNavigationFacade 请求



我正在我的应用程序中使用深度链接,我希望在使用IMvxNavigationFacade导航到视图模型时预设一些参数。深层链接网址如下所示:

myappname://deeplink/toviewwithdata/?navigatetoview=viewtype1&id=78910

因此,深层链接正在工作,并且使用程序集属性进入导航外观

[assembly: MvxNavigation(typeof(RoutingFacade), @"myappname://deeplink/toviewwithdata/?navigatetoview=(?<viewtype>viewtype1)&id=(?<id>d{5})")]

我尝试使用MvxBundleMvxViewModelRequest添加其他参数,但我认为我做得不对。 这是我的导航外观:

public class RoutingFacade : IMvxNavigationFacade
{
public Task<MvxViewModelRequest> BuildViewModelRequest(string url, IDictionary<string, string> currentParameters)
{
var viewModelType = typeof(FirstViewModel);
var parameters = new MvxBundle();
try
{
// TODO: Update this to handle different view types and add error handling
if (currentParameters != null)
{
Debug.WriteLine($"RoutingFacade - {currentParameters["viewtype"]}, {currentParameters["id"]}");
switch (currentParameters["viewtype"])
{
case "viewtype1":
viewModelType = typeof(FirstViewModel);
parameters.Data.Add("test", "somevalue");
break;
default:
case "viewtype2":
viewModelType = typeof(FirstViewModel);
break;
}
}
}
catch (Exception ex)
{
Debug.WriteLine($"RoutingFacade - Exception:  {ex.Message}");
//TODO  viewModelType = typeof(ErrorViewModel);
}
return Task.FromResult(new MvxViewModelRequest(viewModelType, parameters, null));
}

那么我的视图模型初始化方法

public void Init(string id, string viewtype, string test)
{
// Do stuff with parameters
}

但是测试参数为空?如何将参数传递到 MvxViewModelRequest 中?

更新:

不知道从这里的源代码中查看源代码是否可能 https://github.com/MvvmCross/MvvmCross/blob/f4b2a7241054ac288a391c4c7b7a7342852e1e19/MvvmCross/Core/Core/Navigation/MvxNavigationService.cs#L122 因为请求参数是从深层链接 url 的正则表达式和从 BuildViewModelRequest 返回的,facadeRequest.parameterValues 被忽略。

在此拉取请求中添加了此功能

最新更新