Laden...

Binding geht verloren, statt sich zu aktualisieren

Erstellt von CWolle vor 4 Jahren Letzter Beitrag vor 4 Jahren 931 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.079 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.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

5.658 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