2010-08-21 6 views
2

Je suis en train de câbler un calendrier WPF à un modèle de vue MVVM. Je ne sais pas comment lier les sélections de dates et les modifications de mois aux objets MVVM ICommand. Par exemple, pour traiter une modification de date sélectionnée, quel objet dois-je lier en XAML à la propriété de commande appropriée dans mon modèle de vue?Calendrier WPF: liaison aux commandes MVVM?

Autant que je puisse dire, je suis coincé avec la gestion des événements dans le code-behind. Par exemple, il semble que la seule façon de détecter une modification de sélection de date consiste à écrire un gestionnaire d'événements SelectedDatesChanged. Je peux invoquer la propriété de commande dans mon modèle de vue du gestionnaire d'événements, comme ceci:

private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var viewModel = (CalendarViewModel) DataContext; 
    viewModel.GetDateNotes.Execute(); 
} 

Mais je sens une odeur de code à cette approche, à moins qu'il n'y a pas de meilleure approche disponible. Quelqu'un peut-il me dire comment lier un calendrier WPF aux commandes MVVM directement à partir de XAML? Y a-t-il une meilleure approche que celle que je prends? Merci de votre aide.

Répondre

1

N'auriez-vous pas une propriété DateTime dans votre machine virtuelle qui est liée au calendrier et qui déclenche PropertyChanged? Si c'est le cas, ne pouvez-vous pas surveiller les propriétés modifiées en interne ou écrire du code dans votre setter pour que vous sachiez quand la vue a changé de valeur?

+2

Bien sûr! Je me suis tellement emballé dans les commandes que je ne pouvais pas voir la forêt pour les arbres. Merci! –