2017-08-01 43 views
0

我在我的应用中使用深度链接,并且在使用IMvxNavigationFacade导航到视图模型时寻找预设一些参数。深层链接的URL是这样的:深度链接时从IMvxNavigationFacade发送MvxViewModelRequest中的新参数

myappname://深层链接/ toviewwithdata/navigatetoview = viewtype1 & ID = 78910

所以深层链接是工作和IM使用越来越导航门面组装属性

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

我试图用MvxBundle其他参数添加到MvxViewModelRequest但不要想我这样做是正确的。这里是我的导航门面:

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的请求参数得到从深层链接网址,并从BuildViewModelRequest回归的正则表达式设置,facadeRequest.parameterValues被忽略。

回答

0

在此拉取中增加了此功能request