Existe-t-il une convention de navigation commune dans une application MVVM Light Windows Phone?

Au fur et à mesure que mon application grandit, je constate que le même type d'entité apparaît de plus en plus souvent, généralement dans une liste déroulante.

Lorsque quelqu'un appuie sur l'entité, je souhaite accéder à la vue détaillée de cette entité.

Un exemple de cela serait un produit: il apparaît dans une liste de produits par catégorie, il apparaît dans les résultats de la recherche ou peut apparaître sous la forme d'un favori enregistré. Dans mon cas, tous ces éléments proviendraient d'une table du stockage SQLCE local.

Chaque fois que je fais surface de l'entité d'une manière que quelqu'un puisse la toucher, je coupe le même code: abonnez-vous à l'événement SelectionChange dans la liste, extrayez l'entité, utilisez la messagerie MVVM Light pour signaler que l'entité sélectionnée a été modifiée, puis appelez NavigationService pour faire ses affaires.

Quelqu'un a-t-il travaillé sur quelque chose de similaire et, si oui, qu'avez-vous imaginé? Ou plus important encore, s'il y a une convention de la boîte à outils MVVM Light que je néglige, pourriez-vous m'indiquer la bonne direction?

0

2 Réponses

I think the question here is, how do I deal with this without cut/paste the same code each time? If this is the case, maybe trying to package the entity/listbox thing in a XAML usercontrol! Take a look at this: http://www.windowsphonegeek.com/articles/Creating-a-WP7-Custom-Control-in-7-Steps

Ensuite, si la représentation doit être différente, vous pouvez jeter un coup d'œil à ceci: http://www.windowsphonegeek.com/articles/Implementing-Windows-Phone-7-DataTemplateSelector-and-CustomDataTemplateSelector (cet exemple utilise un style différent dans une zone de liste, mais vous pouvez uniquement le modifier. appliquer un style différent sur chaque page avec une liste déroulante)

0
ajouté

Appelez-vous NavigationService depuis code-behind ou le modèle de vue maintenant? Si le premier cas, vous pouvez vérifier le WP7 Navigation arcticle par LBugnion pour le déclencher à partir de la machine virtuelle. Si vous combinez cela avec le comportement EventToCommand ( comme ici ), vous devriez pouvoir créer une commande" MyEntitySelected "agréable et propre dans la VM qui prend l'entité en paramètre.

0
ajouté