public OneWayListBinding(IObservableListBinding <T> target, IReadOnlyObservableValue <IReadOnlyList <T> > sourceValue) { this.target = target ?? throw new ArgumentNullException(nameof(target)); this.sourceValue = sourceValue ?? throw new ArgumentNullException(nameof(sourceValue)); this.sourceValue.PropertyChanged += OnSourceValueChanged; target.Clear(); target.AddRange(sourceValue.Value); }
void OnSourceValueChanged(object sender, PropertyChangedEventArgs e) { if (!alreadyHandlingEvent) { try { alreadyHandlingEvent = true; if (IndexerName.Equals(e.PropertyName, StringComparison.Ordinal)) { TargetAsList.Clear(); target.AddRange(sourceValue.Value); } } finally { alreadyHandlingEvent = false; } } }