public ElementReferenceProperty(IServiceProvider serviceProvider, ElementLookup lookup, ElementViewModel parent, PropertyDescriptor declaringProperty, IEnumerable <Attribute> additionalAttributes) : base(serviceProvider, parent, declaringProperty, additionalAttributes.Union(new Attribute[] { new ValidationAttribute(typeof(ElementReferenceValidator)) })) { if (declaringProperty.PropertyType != typeof(string)) { throw new ArgumentException(Resources.ReferencePropertyInvalidType); } this.lookup = lookup; this.changeScopePropertyWatcher = new ChangeScopePropertyWatcher(); this.changeScopePropertyWatcher.ChangeScopePropertyChanged += new EventHandler(ChangeScopePropertyWatcherChangeScopePropertyChanged); referenceAttribute = base.Attributes.OfType <ReferenceAttribute>().FirstOrDefault(); Debug.Assert(referenceAttribute != null); ((INotifyCollectionChanged)ValidationResults).CollectionChanged += ValidationCollectionChanged; }
///<summary> /// Initializes an instance of the ElementReferenceProperty. This is usually created by the <see cref="SectionViewModel"/>. ///</summary> ///<param name="serviceProvider">The service provide used within the Enterprise Library configuration system.</param> ///<param name="lookup">The element lookup registry.</param> ///<param name="parent">The <see cref="ElementViewModel"/> on which this property is attached.</param> ///<param name="declaringProperty">The descriptor declaring this property.</param> ///<param name="additionalAttributes">Additional attributes to apply to the reference proeprty.</param> ///<exception cref="ArgumentException">Thrown if the declaring property <see cref="PropertyDescriptor.PropertyType"/> is not a <see cref="string"/> type.</exception> public ElementReferenceProperty(IServiceProvider serviceProvider, ElementLookup lookup, ElementViewModel parent, PropertyDescriptor declaringProperty, IEnumerable<Attribute> additionalAttributes) : base(serviceProvider, parent, declaringProperty, additionalAttributes.Union(new Attribute[]{new ValidationAttribute(typeof(ElementReferenceValidator))})) { if (declaringProperty.PropertyType != typeof(string)) throw new ArgumentException(Resources.ReferencePropertyInvalidType); this.lookup = lookup; this.changeScopePropertyWatcher = new ChangeScopePropertyWatcher(); this.changeScopePropertyWatcher.ChangeScopePropertyChanged += new EventHandler(ChangeScopePropertyWatcherChangeScopePropertyChanged); referenceAttribute = base.Attributes.OfType<ReferenceAttribute>().FirstOrDefault(); Debug.Assert(referenceAttribute != null); ((INotifyCollectionChanged)ValidationResults).CollectionChanged += ValidationCollectionChanged; }