private void ViewPropertyChanged(object sender, PropertyChangedEventArgs e) { if (string.Equals(ViewInvoker.Name, e.PropertyName, StringComparison.Ordinal) || string.IsNullOrEmpty(e.PropertyName)) { if (data is INotifyPropertyChanged notify) { notify.PropertyChanged -= DataPropertyChanged; DataInvoker.SetValue(data, ViewInvoker?.GetValue(view)); notify.PropertyChanged += DataPropertyChanged; } else { DataInvoker.SetValue(data, ViewInvoker?.GetValue(view)); } } }
private void DataPropertyChanged(object sender, PropertyChangedEventArgs e) { if (ViewInvoker == null) { throw new InvalidOperationException($"{nameof(ViewInvoker)} is not specified!"); } if (string.Equals(DataInvoker.Name, e.PropertyName, StringComparison.Ordinal) || string.IsNullOrEmpty(e.PropertyName)) { if (view is INotifyPropertyChanged notify) { notify.PropertyChanged -= ViewPropertyChanged; ViewInvoker.SetValue(view, DataInvoker?.GetValue(data)); notify.PropertyChanged += ViewPropertyChanged; } else { ViewInvoker.SetValue(view, DataInvoker?.GetValue(data)); } } }