Ich habe ein ViewModel mit einem komplexen Eigenschaftstyp und möchte meine Ansicht an eine verschachtelte Eigenschaft dieses Objekts binden.WPF-Bindungsaktualisierungsbenachrichtigung für geschachtelte Eigenschaft, wenn sich die übergeordnete Eigenschaft ändert
Mein ViewModel implementiert INotifyPropertyChanged
(oder wird exact sein BaseViewModel
implementiert es). Die Klasse der übergeordneten Eigenschaft implementiert INotifyPropertyChanged
nicht.
Wenn ich den Wert der übergeordneten Eigenschaft aktualisiere, wird die verschachtelte Eigenschaft nicht aktualisiert. Können Sie mir sagen, wie ich diese Funktionalität implementieren kann?
Ansichtsmodell
public class ViewModel : BaseViewModel
{
private Car _myCarProperty;
public Car MyCarProperty
{
get { return _myCarProperty; }
set
{
if (value == _myCarProperty) return;
_myCarProperty = value;
OnPropertyChanged();
}
}
}
im View-Bindung
<TextBlock Text="{Binding Path=MyCarProperty.Manufacturer}" />
Wenn ich den Wert MyCarProperty
ändern die Ansicht nicht aktualisiert.
Danke für jede Hilfe!
Edit: OnPropertyChanged() -Implementierung
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion INotifyPropertyChanged
Haben Sie Kindereigentum benachrichtigt? –
Die Klasse 'Car' implementiert 'INotifyPropertyChanged' nicht. Aber ich ändere nicht die Eigenschaft 'Manufacturer', ändere die Eigenschaft' MyCarProperty' und erwarte daher, dass das OnNotifyPropertyChanged-Ereignis die Wertaktualisierung auslöst?- Bitte sehen Sie meine bearbeitete Frage. –
Können Sie uns zeigen, wie OnPropertyChanged implementiert ist? –