Laden...

Binding geht verloren, statt sich zu aktualisieren

Erstellt von CWolle vor 4 Jahren Letzter Beitrag vor 4 Jahren 924 Views
CWolle Themenstarter:in
57 Beiträge seit 2012
vor 4 Jahren
Binding geht verloren, statt sich zu aktualisieren

Ich habe ein MainWindow mit DockPanel für einen Frame und einer DependencyProperty, auf die in der StatusBar verwiesen wird.


<Label Content="{Binding X, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

wenn ich nun im Frame die DependencyProperty ändere, geht das obige Binding einfach verloren, statt sich anzupassen.


public Frame(ref MainWindow haupt)
{
     InitializeComponent();            
     haupt.X = "neu";
 }

wird UpdateSourceTrigger im MainWindow nicht ausgeführt, weil ich mich in einem anderen Frame befinde?

OO gibts seit Platon - hatte der auch C#?

2.078 Beiträge seit 2012
vor 4 Jahren

MainWindow klingt nach View, nicht nach ViewModel, sieht aus, als würdest Du View und ViewModel hier vermischen.
Und was soll das "ref" da? Es macht fast nie Sinn, ref zu benutzen und wenn dann nur bei Structs, gleichzeitig macht's aber auch fast nie Sinn, Structs zu benutzen, insbesondere bei WPF.

Prinzipiell funktioniert das Binding aber, wenn:

  • Der DataContext des Labels oder eines Controls weiter oben im Tree eine Instanz des Objektes ist, an das Du bindest möchtest
  • Das Objekt INotifyPropertyChanged implementiert und das Event gefeuert wird, wenn die Property sich ändert.
5.657 Beiträge seit 2006
vor 4 Jahren

Ich habe ein MainWindow mit DockPanel für einen Frame und einer DependencyProperty, auf die in der StatusBar verwiesen wird.

Das klingt nach einer ungeeigneten Software-Architektur. Kennst du schon [Artikel] MVVM und DataBinding?

Weeks of programming can save you hours of planning