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 MvxViewModelRequest
MvxBundle
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 .