Heim > Backend-Entwicklung > C++ > Warum aktualisiert mein DependentyProperty das übergeordnete ViewModel nicht?

Warum aktualisiert mein DependentyProperty das übergeordnete ViewModel nicht?

DDD
Freigeben: 2025-02-01 17:21:09
Original
578 Leute haben es durchsucht

Why Doesn't My DependencyProperty Binding Update the Parent ViewModel?

Fehlerbehebung bei DeponcyProperty -Bindungen in einer Dateibrowser -Steuerung

Während des Erstellens einer benutzerdefinierten Dateibrowsersteuerung entsteht ein gemeinsames Problem, bei dem die Auswahl einer Datei die interne Textbox des Steuerelements aktualisiert, die Änderung in der Eigenschaft SelectedFile im übergeordneten Ansichtsmodell nicht verbreitet. Dies geschieht auch bei Verwendung einer DependencyProperty und Standardbindung.

Die Grundursache beruht häufig aus der Einstellung des DataContext des Usercontrols in seinem Konstruktor:

DataContext = this;
Nach dem Login kopieren

Diese Selbstreferenzung DataContext überschreibt das ererbte DataContext vom übergeordneten und bricht die Bindung an das übergeordnete Ansichtsmodell.

Lösung: Verwendung RelativeSource Bindung

Die Lösung beinhaltet die Modifizierung der Bindung innerhalb des XAML des Usercontrol, um das übergeordnete Ansichtsmodell explizit abzielen. Verwenden Sie RelativeSource, um den visuellen Baum zu durchqueren:

<TextBox Text="{Binding SelectedFile, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
Nach dem Login kopieren

Diese überarbeitete Bindung stellt sicher, dass die Eigenschaft SelectedFile im UserControl korrekt an die SelectedFile Eigenschaft des übergeordneten Ansichtsmodells bindet, selbst wenn das DataContext des Usercontrol intern gesetzt wird.

nun, wenn Sie die Usercontrol einbetten:

<FileBrowserControl SelectedFile="{Binding SelectedFile}" />
Nach dem Login kopieren

Die Bindung funktioniert wie erwartet und aktualisiert die Eigenschaft des übergeordneten Ansichtsmodells bei der Dateiauswahl. SelectedFile

Das obige ist der detaillierte Inhalt vonWarum aktualisiert mein DependentyProperty das übergeordnete ViewModel nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage