2017-08-01 5 views
0

J'utilise le deepplinking dans mon application et je cherche à prérégler certains paramètres lors de la navigation vers le viewmodel en utilisant un IMvxNavigationFacade. L'URL du lien profond est comme ceci:Envoi de nouveaux paramètres dans MvxViewModelRequest à partir d'un IMvxNavigationFacade lors de la création de liens profonds

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

Ainsi, la liaison profonde fonctionne et im se rendre à la façade de navigation à l'aide l'ensemble attribut

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

J'ai essayé d'ajouter d'autres paramètres à l'aide d'un MvxViewModelRequestMvxBundle mais ne pense pas im faire droit. voici ma façade de navigation:

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)); 
} 

alors mon viewmodel méthode Init

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

mais le paramètre de test est nul? Comment passez-vous les paramètres dans un MvxViewModelRequest?

Mise à jour:

Je ne sais pas s'il est possible de regarder la source ici https://github.com/MvvmCross/MvvmCross/blob/f4b2a7241054ac288a391c4c7b7a7342852e1e19/MvvmCross/Core/Core/Navigation/MvxNavigationService.cs#L122 que les paramètres de la requête se définir de la regex de l'url deeplink et le retour de BuildViewModelRequest, facadeRequest.parameterValues ​​ignorés .

Répondre

0

Ajouté cette fonctionnalité dans cette traction request