2009-06-15 7 views
0

Il semble que les événements ValueChanged et SourceUpdated se déclenchent simplement en définissant DataContext. Est-ce que quelqu'un sait d'une manière de dire si la valeur a changé est réellement d'une certaine interaction d'utilisateur?Détermination de l'origine de l'événement ValueChanged d'une liaison WPF

Un exemple simple est d'avoir un bouton "Enregistrer" sur un formulaire WPF qui est désactivé jusqu'à ce que l'utilisateur change réellement les données. Étant donné que les événements ValueChanged et SourceUpdated se déclenchent lorsque le DataContext est défini, je ne peux pas simplement activer le bouton "Enregistrer" sans déterminer en premier lieu l'origine de l'événement.

Merci d'avance.

Répondre

0

Sans connaître plus de détails sur votre implémentation (architecture de votre interface utilisateur, etc.), je ne peux donner que des conseils généraux.

  1. Si vous avez un modèle de présentation, lier la ness activée du bouton Enregistrer une propriété sur votre PM, qui est régie par les modifications apportées à d'autres propriétés sur votre PM. Si votre codage directement contre votre code-behind, différer liaison le bouton Enregistrer jusqu'à APRES que vous avez défini le DataContext.

Une chose que vous voulez garder à l'esprit est que la mise en DataContext est comme changer le DataBinding de tous les contrôles où vous ne définissez pas la source explicitement. S'appuyant sur DataContext pour vous permettre de spécifier simplement le chemin, mais vous devez tenir compte de ce comportement en cascade.