Dois-je pouvoir transmettre un Tuple
en tant que paramètre à OnNavigatedToAsync
? Y a-t-il un meilleur moyen de transmettre ce type d'information?Tuple <ThisThing, bool> paramètre pour OnNavigatedToAsync dans le modèle 10
J'ai déjà essayé, mais je reçois toujours une exception d'incantation invalide dans la ligne Value =
ci-dessous. La valeur est typée comme Tuple<ThisThing, bool>
ViewModel.cs:
public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> suspensionState)
{
Value = (Tuple<ThisThing, bool>)((suspensionState.ContainsKey(nameof(Value))) ? suspensionState[nameof(Value)] : parameter);
}
passage de paramètre en tant que Tuple
.
public void GoToDetailsPage() =>
NavigationService.Navigate(typeof(ThisThingPage), (new ThisThing() { Prop1=1, Prop2=2}, true));
Edit1: Je l'ai déjà essayé de simplifier cela
public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> suspensionState)
{
Value = (Tuple<ThisThing, bool>)parameter;
}
et quand le débogage et entrer dans OnNavigatedToAsync
et planant au-dessus parameter
je vois qu'il est ce que je pense, un Tuple
, mais donne un InvalidCastException
sur la ligne suivante.
ne mettent pas tout en une seule ligne lors du débogage. vous pouvez avoir 'var x = suspensionState [nameof (Value)]' avec le débogueur, vous pouvez vérifier ce que 'x' est réellement. apparemment ce n'est pas un 'Tuple' –
Désolé. J'aurais dû mentionner que j'ai déjà fait quelque chose de similaire. Modification de l'article original –
Il semble que «ValueTuple» ne soit pas un «Tuple». Creuser dans cela maintenant. –