2009-06-15 8 views
0

Es scheint, dass die Ereignisse ValueChanged und SourceUpdated ausgelöst werden, indem einfach der DataContext festgelegt wird. Kennt jemand eine Möglichkeit zu sagen, ob der geänderte Wert tatsächlich von einer Benutzerinteraktion stammt?Ermitteln, was ein ValueChanged-Ereignis einer WPF-Bindung ausgelöst hat

Ein einfaches Beispiel ist eine Schaltfläche "Speichern" in einem WPF-Formular, die deaktiviert ist, bis der Benutzer die Daten tatsächlich ändert. Da sowohl ValueChanged- als auch SourceUpdated-Ereignisse ausgelöst werden, wenn der DataContext festgelegt wird, kann ich nicht einfach die Schaltfläche "Save" (Speichern) aktivieren, ohne zu bestimmen, was das Ereignis ausgelöst hat.

Vielen Dank im Voraus.

Antwort

0

Ohne weitere Details über Ihre Implementierung (Ihre UI-Architektur, etc.) zu kennen, kann ich nur allgemeine Hinweise geben.

  1. Wenn Sie eine Präsentationsmodell haben, binden die enabled-ness der Save-Taste, um eine Immobilie auf dem PM, die durch Änderungen an anderen Eigenschaften auf Ihrem PM geregelt.

  2. Wenn Sie direkt mit Ihrem Code-Behind codieren, verschieben Sie das Speichern der Bindung, bis Sie den DataContext festgelegt haben.

Eine Sache, die Sie im Auge behalten wollen, ist, dass die Datacontext-Einstellung ist das Databinding aller Bedienelemente wie das Ändern, wo Sie nicht die Quelle explizit festlegen. Verlassen Sie sich auf DataContext, damit Sie einfach den Pfad angeben können, aber Sie müssen dieses kaskadierende Verhalten berücksichtigen.

Verwandte Themen