2009-03-02 5 views
2

Wenn ich ein Formular mit Kontrollen Databound zu einem Instanzvariablen Objekt habe, ist es eine Möglichkeit, Änderungen zu tun zurückkehren, dass der Benutzer gemacht, möglicherweise durch wie etwas zu tun:Wie kann ich Änderungen an einem DataBound-Formular einfach rückgängig machen?

myLocalObject = DataLayer.GetCurrentState(); 

und haben die Steuerelemente des Formulars (gebunden an myLocalObject) automatisch die Änderungen übernehmen?

Danke!

Antwort

0

Ich habe festgestellt, dass die folgenden funktioniert der Trick:

var myLocalObject = DataLayer.GetCurrentState(); 
LayoutRoot.DataContext = null; 
LayoutRoot.DataContext = myLocalObject; 

Aus irgendeinem Grund, wenn ich meine gebundene Steuerelemente nicht abholen Datacontext auf null gesetzt, die Änderungen nicht, wenn Änderungen rückgängig gemacht werden .

+0

Dieser "einige Grund", den Sie erwähnen, ist darauf zurückzuführen, dass das Zustandsobjekt "Gleich" überschreibt. Siehe meinen Beitrag hier für eine Erklärung: http://kentb.blogspot.com/2007/03/beware-datacontext-and-equals.html. Außerdem hängt Ihre Problemumgehung sehr von den Besonderheiten Ihrer Datenschicht ab - es handelt sich nicht um eine allgemeine Lösung. –

3

Werfen Sie einen Blick in die Schnittstelle.