Laden...

PropertyChanged und Databinding

Erstellt von Bender vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.533 Views
B
Bender Themenstarter:in
40 Beiträge seit 2013
vor 10 Jahren
PropertyChanged und Databinding

Hallo zusammen,

ich habe noch Verständnisprobleme beim Datacontext und Databindung in WPF.
Eine Methode einer Klasse soll 2 Werte ändern und diese in der Form übernehmen. Dazu habe ich bei einem Label folgendes gemacht.

<Label x:Name="lCooper" FontWeight="Bold" Grid.Row="0" Grid.Column="1" Content="{Binding Path=Cooper}"/>

Der Wert in diesem Label soll sich ändern wenn die Property in der Klasse sich geändert hat, aber da passiert leider nichts. Ich habe einen Button den ich anklicke der dann die Methode der Klasse aufruft und den Wert in der Klasse ändert.

Als ich gegoogelt habe bin ich auf UpdateSourceTrigger=PropertyChanged gestoßen, aber das hat leider keine Auswirkungen gehabt als ich es eingefügt habe.

849 Beiträge seit 2006
vor 10 Jahren

Hi,

ich nehme an das Du INotifyPropertyChanged noch nicht implementiert hast? Dann kann deine View nie etwas davon mitbekommen das sich das Property geändert hat..

Grüße

B
Bender Themenstarter:in
40 Beiträge seit 2013
vor 10 Jahren

so richtig hab ich das noch nicht verstanden wie das funktionieren soll. Das ist alles eine ziemliche Umstellung von Windows Forms auf WPF. Ich muss mich da noch ein wenig mehr reinlesen. Bin aber kurz davor wieder zu Windows Forms zu wechseln.

F
10.010 Beiträge seit 2004
vor 10 Jahren

INotifyPropertyChanged war schon unter FW das Mass der Dinge, da hat sich rein garnichts geändert.

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo Bender,

je nach Anwendungsfall ist Forms besser/schlechter geeignet als WPF. Aber das DataBinding/MVVM ist mMn ein extremer Vorteil und ich mag es nicht mehr missen.

Hast du mal MVVM gelesen (und versucht zu verstehen?)

Grundsätzlich (und grob erklärt): Dein DataContext bildet die Schnittstelle ab, auf die du von deiner View aus binden kannst. In deinem Fall solltest du eigentlich ein Property "Cooper" bereitstellen.

In deinem ViewModel Implementierst du, wie unconnected schon richtig gesagt hat, das Interface INotifyPropertyChanged. Das Event schmeisst du einfach in deinem Setter (oder wo du eben magst, dass das Ui notifiziert wird, dass es etwas neues gibt). Sobald das aufgerufen wird, wirst du beim debuggen sehen, dass er wieder in den Getter geht (das ist das im Prinzip das UI) und sich den neuen Wert holt.

Gruss

Coffeebean

B
Bender Themenstarter:in
40 Beiträge seit 2013
vor 10 Jahren

ich sehe mir das mal an. danke an alle