2010-10-16 4 views
5

Ich bin eine Anwendung erstellen und ich habe unter der Annahme , dass, wenn ein Steuerelement an ein Mitglied im View-Modell gebunden ist (dh ein TextBox zu einem Zeichenfolgenfeld) die Zeichenfolge aktualisiert wird, wenn der Benutzer ändert die Informationen in der Textbox und nicht später.In C# (WPF) tritt Databinding auf, wenn die Datenänderungen im UI-Thread sofort?

Aber was ich gefunden habe, ist, dass die Zeichenfolge aktualisiert wird, wenn das Textfeld geändert wird und wenn der Benutzer \ Tabs aus dem Textfeld klickt.

(Ich verwende den Caliburn.Micro Rahmen, wenn es ankommt.)

Kann mir jemand erklären, was richtig ist und wie es zu machen, so dass eine Änderung wird sofort reflektiert?

Antwort

6

Dies ist kein WPF-Problem ... es liegt total bei den Kontrollen.

Aber was ich gefunden habe, ist, dass die Zeichenfolge aktualisiert, wenn die Textbox und wenn der Benutzer klickt auf \ Registerkarten aus die Textbox geändert wird.

Dies ist ein spezielles Textfeld, um die Anzahl der Mengenoperationen zu reduzieren und die Einstellung unvollständiger Daten zu vermeiden.

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c3ae2677-7cc9-4bb3-9cce-4e7c0eeff6f0 hat eine Lösung - im Grunde Update Source Trigger wird auf Eigenschaft geändert geändert. Wenn Sie das tun, erhalten Sie jedoch viel mehr ungültige Daten in das Modell, wie zum Beispiel, wenn Leute eine Invocie-Nummer eingeben, werden alle Partials zu dem Modell gehen.

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx hat eine schöne Erklärung - wie es heißt, normalen Trigger ist PropertyChanged, während die Text-Eigenschaft standardmäßig auf LostFocus.

+0

Danke für die Antwort werde ich definitiv in den Link schauen. Was schlechte Daten betrifft, führt das Ansichtsmodell tatsächlich die Eingabevalidierung durch und speichert nichts in dem Modell, solange nicht alles passiert. – Scifiballer24

+0

Sicher. es ist nur viel weniger Validierung, wenn Sie nur mit "fertige Eingabe" umgehen und nicht die "auf dem Weg" Updates bekommen;) – TomTom