public ModelEnumerableNode(IEnumerable value)
 {
     this.value = value;
     if (this.value is INotifyCollectionChanged)
     {
         ((INotifyCollectionChanged)this.value).CollectionChanged += WeakDelegate.Connect <ModelEnumerableNode, INotifyCollectionChanged, NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>(
             this, (INotifyCollectionChanged)this.value, (target, sender, eventargs) => target.CollectionChanged(sender, eventargs), (source, handler) => source.CollectionChanged -= handler);
     }
 }
Beispiel #2
0
        private PropertyNode(INotifyPropertyChanged owner, PropertyInfo propertyInfo)
        {
            this.owner                  = owner;
            this.propertyInfo           = propertyInfo;
            this.owner.PropertyChanged += WeakDelegate.Connect <PropertyNode, INotifyPropertyChanged, PropertyChangedEventHandler, PropertyChangedEventArgs>(
                this, this.owner, (target, sender, eventargs) => target.OnPropertyChanged(sender, eventargs), (source, handler) => source.PropertyChanged -= handler);
            if (this.owner is INotifyDataErrorInfo)
            {
                ((INotifyDataErrorInfo)this.owner).ErrorsChanged += WeakDelegate.Connect <PropertyNode, INotifyDataErrorInfo, DataErrorsChangedEventArgs>(
                    this, (INotifyDataErrorInfo)this.owner, (target, sender, eventargs) => target.OnErrorsChanged(eventargs), (source, handler) => source.ErrorsChanged -= handler);
            }
            this.UpdateNode();

            this.validationSeverityAdapter = this.CreatePropertyAdapter(
                nameof(this.ValidationSeverity),
                () => this.ValidationResults.DefaultIfEmpty(new ValidationMessage(ValidationSeverity.None, "")).Max(message => message.Severity)
                );
        }