2010-10-16 3 views
1

Je joue avec le SD7 WP7 et le Prism for WP7 beta et j'ai rencontré un problème que je n'arrive pas à résoudre (ou même une solution de contournement) . Tout d'abord, je suis nouveau dans WPF/Silverlight/WP7 et Prism, donc je pourrais négliger quelque chose de très évident. Donc, j'ai une page Shell qui a ma région qui est utilisée pour contenir mes pages de contenu, et tout cela fonctionne très bien! Maintenant, mon problème est que j'ai un contrôle des paramètres qui permettra aux utilisateurs d'éditer les paramètres de l'application (noms, emplacements, etc). Maintenant, je peux obtenir cette page pour travailler sans problèmes en ayant un bouton sur un de mes contrôles qui fera passer le gestionnaire de région au contrôle. Cependant, je voudrais utiliser la barre d'application sur le téléphone pour avoir le bouton, mais je ne peux pas pour la vie de moi comprendre comment accéder à mon objet de modèle à partir de la page qui est ouverte par l'application barre de clic. Je peux seulement faire un NavigationService.Navigate() à une page de paramètres, mais les objets PhoneApplicationPage dans WP7 n'autorisent pas l'injection sur les constructeurs (les constructeurs doivent être sans paramètre) ainsi je ne peux pas passer dans l'instance d'objet de cette manière. Donc, ma question est, comment puis-je accéder (ou passer) des objets entre les pages ou les contrôles?Windows Phone 7 - Utiliser la barre d'application et Prism (ou MVVM)

Merci!

Répondre

1

Dans les exemples qu'ils utilisent cette technique pour définir le contexte de données d'un formulaire après qu'il est naviguées d'une autre forme:

NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative)); 
FrameworkElement root = Application.Current.RootVisual as FrameworkElement; 
root.DataContext = some_object; 
+0

Parfait! C'est définitivement plus moche que je ne le voudrais, mais ça fait l'affaire. – doobist

+0

Btw, j'utiliserait soit "FrameworkElement root = (FrameworkElement) Application.Current.RootVisual;" ou vérifiez la racine pour null. – Sam