J'ai UserControlViewModel
qui déclenche un événement:Où accéder DataContext dans WinRT XAML UserControl
public event EventHandler<EventArgs> StuffDone;
Un objet de UserControlViewModel
est créé et mis en service à l'intérieur MainPageViewModel
:
this.userControlViewModel = new UserControlViewModel();
MainPageViewModel
est la vue -Modèle pour MainPage
.
En MainPage.xaml, j'ai le code suivant pour placer UserControlView
UserControl
dans MainPage
et son DataContext
initialisez:
<views:UserControlView DataContext="{Binding userControlViewModel, Mode=OneWay}" IsHitTestVisible="False"></views:UserControlView>
Jusqu'à présent, tout fonctionne très bien.
Maintenant, je souhaite m'abonner à l'événement StuffDone
à l'intérieur de UserControlView
. La première chose qui m'est venue est de le faire à l'intérieur Loaded
gestionnaire d'événements de UserControlView
; cependant, le DataContext
est toujours null
. L'analyse du reste des événements UserControl
ne m'a donné aucune idée du tout. Où est le bon endroit pour obtenir le DataContext
et vous abonner à ses événements?
Merci d'avance.
Douloureux. Il n'y a aucun événement et aucune métadonnée de substitution sur la propriété de dépendance DataContext. Rentrez chez vous, Microsoft, vous êtes saoul. Ce gars a une solution ici: http://dotneteers.net/blogs/vbandi/archive/2013/01/23/datacontextchanged-event-for-winrt.aspx Hacky. – Will
Je l'ai fait avant et ça marche bien pour moi. Mais j'ai utilisé "Mode = TwoWay". Dans l'événement Loaded de UserControl, je peux accéder à ViewModel (bien sûr, vous devez convertir DataCotext à votre ViewModel pour y accéder) – SachiraChin
@Sach, fait quoi exactement? que [Will] (http://stackoverflow.com/users/1228/will) suggéré? Si c'est autre chose, pouvez-vous donner un exemple de ce que vous avez fait? – TheBlueSky