Mam obiekt ViewModel ze złożonym typem właściwości i chcę powiązać mój widok z zagnieżdżoną właściwością tego obiektu.Powiadomienie o aktualizacji powiązania WPF dla właściwości zagnieżdżonej, gdy właściwość nadrzędna zmienia się
Mój ViewModel wdraża INotifyPropertyChanged
(lub należy je wykonać w wersji BaseViewModel
). Klasa własności nadrzędnej nie implementuje INotifyPropertyChanged
.
Podczas aktualizacji wartości właściwości nadrzędnej zagnieżdżona właściwość nie jest aktualizowana. Czy możesz mi powiedzieć, w jaki sposób mogę zaimplementować tę funkcjonalność?
ViewModel
public class ViewModel : BaseViewModel
{
private Car _myCarProperty;
public Car MyCarProperty
{
get { return _myCarProperty; }
set
{
if (value == _myCarProperty) return;
_myCarProperty = value;
OnPropertyChanged();
}
}
}
Oprawa w Widoku
<TextBlock Text="{Binding Path=MyCarProperty.Manufacturer}" />
Kiedy zmienić wartość MyCarProperty
View nie aktualizuje.
Dzięki za pomoc!
Edit: OnPropertyChanged() realizacja
#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
Czy powiadomiłeś o tym dobro dziecka? –
Klasa 'Car' nie implementuje' INotifyPropertyChanged'. Ale ja nie zmieniam własności 'Producenta', zmieniam właściwość' MyCarProperty', więc spodziewam się, że zdarzenie OnNotifyPropertyChanged wywoła aktualizację wartości?- zobacz moje zredagowane pytanie. –
Czy możesz pokazać nam, w jaki sposób została zaimplementowana funkcja OnPropertyChanged? –