У меня есть эта вложенная привязка к объекту ItemDescription , и по умолчанию свойство MyEvidence имеет значение null, поэтому оно отображается пустым, но как только я устанавливаю его значение для объекта EvidenceDTO,Значение itemDescription отображается, как и ожидалось.
Теперь, когда я снова установил для свойства MyEvidence значение null, я ожидаю, что текст ItemDescription снова будет пустым, но этого не происходит, очевидно, он не знает, что родительский объект являетсятеперь изменено / обнулено, так что дочерний объект больше не должен появляться. У меня есть INotifyPropertyChanged настройка для класса ViewModel, следовательно, для свойства MyEvidence, а также свойства ItemDescription в EvidenceDTO с вспомогательным классом, известным как Observable
Xaml Binding
<TextBlock Text="{x:Bind ViewModel.MyEvidence.ItemDescription, Mode=OneWay}" />
Инициализация ViewModel в бэкэнде страницы, например,
public MainViewModel ViewModel { get; } = new MainViewModel();
Код моей модели представления
public class MainViewModel : Observable
{
private EvidenceDTO _myEvidence;
public EvidenceDTO MyEvidence { get => _myEvidence; set => Set(ref _myEvidence, value); }
}
EvidenceDTO
public class EvidenceDTO : Observable
{
private string _itemDescription;
public string ItemDescription { get => _itemDescription; set => Set(ref _itemDescription, value); }
}
Наблюдаемый класс
public class Observable : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void Set<T>(ref T storage, T value, [CallerMemberName]string propertyName = null)
{
if (Equals(storage, value))
{
return;
}
storage = value;
OnPropertyChanged(propertyName);
}
protected void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Я показываю ItemDescription в качестве примера, есть еще много свойств EvidenceDTO, которыеотображаются в пользовательском интерфейсе аналогичным образом, поэтому мне нужно какое-то универсальное решение, в котором уведомление об изменении свойства генерируется на всех уровнях пути привязки.