Fragensteller
Seltsames Binding Verhalten

Frage
-
Hallo Zusammen,
wie kommt es, dass bei Datenänderung im ViewModel (PropertyChanged) ein ValueConverter reagiert, nicht aber die ChangedCallback Methode die im Dependency Property definiert ist?
Das gebundene Control ist Wrapper für ein Grid. Es wird (über einen ValueConverter) an eine ObservableCollection gebunden.
Änderungen die im Grid (inline editing) gemacht werden, werden richtig an die Collection zurückgegeben. Beim Aufruf der View werden die Daten aus der Collection auch initial richtg im Grid dargestellt.
Wenn ich aber über ein anderes Control die Collection im ViewModel ändere, tritt das oben beschriebene Problem auf. Der ValueConverter regiert auf die Änderung, aber eben das Control selber erkennt keine Änderung. IMO unlogisch...
Ich stehe da grad etwas auf dem Schlauch, bzw. kapiere es einfach nicht...
Ich würde mich über einen kleinen Denkanstoß freuen. Vielen Dank :-)Donnerstag, 10. November 2011 14:39
Alle Antworten
-
versuch's mal mit BindingMode TwoWay.
Binding Mode ist TwoWay und TwoWay-Binding ist auch nicht das Problem. Ich möchte die geänderten Daten im Grid darstellen können. Die Daten kommen aber nicht einmal bis zum oben beschriebenen WrapperControl, sondern nur bis zum ValueConverter der beim Binding am WrapperControl angehängt ist.Dennoch vielen Dank für den Versuch :-)
Freitag, 11. November 2011 15:08 -
Tut mir leid so eine dumme Frage zu stellen, aber wird den wirklich was geändert?
Das Problem ist das denke ich, dass du zwar den Inhalt der ObservableCollection änderst, nicht aber die Collection an sich.
Das Binding und damit auch der ValueConverter reagiert auf das PropertyChanged, was von der Collection ausgelößt wird. Die ChangedCallback wird aber glaube ich nur ausgelöt, wenn du die Variable neu setzt.
Die DependencyProperty bekommt es also gar nicht mit, wenn in der Collection was geändert wird.
Ich denke das ist der Grund.
Grüße,
Alex
- Bearbeitet Ahn1 Donnerstag, 17. November 2011 08:05
Donnerstag, 17. November 2011 08:02 -
Hi,
@Alex: Ich vermute - weil eine ObservableCollection verwendet wurde und nicht 'nur' ein "List" - dass es um Änderungen an der Elementmenge geht. Daher wird wohl der Converter auch nicht auf die Collection (bzw. im Binding ItemsSource o. ä.), sondern auf jedes einzelne Item angewendet.
Ansonsten ist Dein Einwand korrekt: der Changed-CallBack wird nur bei einer tatsächlichen Änderung der Daten aufgerufen, der Converter bei jeder Zuweisung. this.MyProperty = this.MyProperty würde zu dem oben beschrieben Verhalten führen.
Gruß
JürgenDonnerstag, 17. November 2011 08:18