Пример #1
0
 internal void SetAttachedPropertyUsage(AttachedPropertyUsage attachedPropertyUsage)
 {
     if (this.Sealed)
     {
         throw new InvalidOperationException(string.Format("TypeMetadataCannotChangeAfterUse", new object[0]));
     }
     this._attachedPropertyUsage = attachedPropertyUsage;
     this.SetModified(0x10);
 }
Пример #2
0
 public void SetAttachedPropertyUsage(AttachedPropertyUsage attachedPropertyUsage)
 {
     if (this.Sealed)
     {
         throw new InvalidOperationException(string.Format("TypeMetadataCannotChangeAfterUse"));
     }
     this._attachedPropertyUsage = attachedPropertyUsage;
     this.SetModified(16);
 }
Пример #3
0
 protected virtual void Merge(RadPropertyMetadata baseMetadata, RadProperty dp)
 {
     if (baseMetadata == null)
     {
         throw new ArgumentNullException("baseMetadata");
     }
     if (this.Sealed)
     {
         throw new InvalidOperationException(string.Format("TypeMetadataCannotChangeAfterUse", new object[0]));
     }
     if (!this.IsModified(1))
     {
         this._defaultValue = baseMetadata.DefaultValue;
     }
     if (!this.IsModified(0x10))
     {
         this._attachedPropertyUsage = baseMetadata.AttachedPropertyUsage;
     }
     if (baseMetadata.PropertyChangedCallback != null)
     {
         Delegate[] delegateArray1 = baseMetadata.PropertyChangedCallback.GetInvocationList();
         if (delegateArray1.Length > 0)
         {
             PropertyChangedCallback callback1 = (PropertyChangedCallback)delegateArray1[0];
             for (int num1 = 1; num1 < delegateArray1.Length; num1++)
             {
                 callback1 = (PropertyChangedCallback)Delegate.Combine(callback1, (PropertyChangedCallback)delegateArray1[num1]);
             }
             callback1 = (PropertyChangedCallback)Delegate.Combine(callback1, this._propertyChangedCallback);
             this._propertyChangedCallback = callback1;
         }
     }
     if (this._coerceValueCallback == null)
     {
         this._coerceValueCallback = baseMetadata.CoerceValueCallback;
     }
 }
Пример #4
0
 protected virtual void Merge(RadPropertyMetadata baseMetadata, RadProperty dp)
 {
     if (baseMetadata == null)
     {
         throw new ArgumentNullException(nameof(baseMetadata));
     }
     if (this.Sealed)
     {
         throw new InvalidOperationException(string.Format("TypeMetadataCannotChangeAfterUse"));
     }
     if (!this.IsModified(1))
     {
         this._defaultValue = baseMetadata.DefaultValue;
     }
     if (!this.IsModified(16))
     {
         this._attachedPropertyUsage = baseMetadata.AttachedPropertyUsage;
     }
     if (baseMetadata.PropertyChangedCallback != null)
     {
         Delegate[] invocationList = baseMetadata.PropertyChangedCallback.GetInvocationList();
         if (invocationList.Length > 0)
         {
             PropertyChangedCallback propertyChangedCallback = (PropertyChangedCallback)invocationList[0];
             for (int index = 1; index < invocationList.Length; ++index)
             {
                 propertyChangedCallback = (PropertyChangedCallback)Delegate.Combine((Delegate)propertyChangedCallback, invocationList[index]);
             }
             this._propertyChangedCallback = propertyChangedCallback + this._propertyChangedCallback;
         }
     }
     if (this._coerceValueCallback != null)
     {
         return;
     }
     this._coerceValueCallback = baseMetadata.CoerceValueCallback;
 }
Пример #5
0
        private static RadProperty RegisterCommon(
            string name,
            Type propertyType,
            Type ownerType,
            AttachedPropertyUsage usage,
            RadPropertyMetadata defaultMetadata,
            ValidateValueCallback validateValueCallback)
        {
            RadProperty.FromNameKey fromNameKey = new RadProperty.FromNameKey(name, ownerType);
            lock (RadProperty.Synchronized)
            {
                if (RadProperty.PropertyFromName.Contains((object)fromNameKey))
                {
                    throw new ArgumentException(string.Format("Property already registered", new object[2]
                    {
                        (object)name,
                        (object)ownerType.Name
                    }));
                }
            }
            if (defaultMetadata == null)
            {
                defaultMetadata = RadProperty.AutoGeneratePropertyMetadata(propertyType, validateValueCallback, name, ownerType);
            }
            else if (!defaultMetadata.DefaultValueWasSet())
            {
                defaultMetadata.DefaultValue = RadProperty.AutoGenerateDefaultValue(propertyType);
            }
            defaultMetadata.SetAttachedPropertyUsage(usage);
            RadProperty dp = new RadProperty(name, propertyType, ownerType, defaultMetadata, validateValueCallback);

            defaultMetadata.Seal(dp, (Type)null);
            lock (RadProperty.Synchronized)
                RadProperty.PropertyFromName[(object)fromNameKey] = (object)dp;
            return(dp);
        }
Пример #6
0
        private static RadProperty RegisterCommon(string name, Type propertyType, Type ownerType, AttachedPropertyUsage usage, RadPropertyMetadata defaultMetadata, ValidateValueCallback validateValueCallback)
        {
            RadProperty.FromNameKey key1 = new RadProperty.FromNameKey(name, ownerType);
            lock (RadProperty.Synchronized)
            {
                if (RadProperty.PropertyFromName.Contains(key1))
                {
                    object[] objArray1 = new object[] { name, ownerType.Name };
                    throw new ArgumentException(string.Format("Property already registered", objArray1));
                }
            }
            if (defaultMetadata == null)
            {
                defaultMetadata = RadProperty.AutoGeneratePropertyMetadata(propertyType, validateValueCallback, name, ownerType);
            }
            else
            {
                if (!defaultMetadata.DefaultValueWasSet())
                {
                    defaultMetadata.DefaultValue = RadProperty.AutoGenerateDefaultValue(propertyType);
                }
                //TODO:
                //RadProperty.ValidateMetadataDefaultValue(defaultMetadata, propertyType, validateValueCallback);
            }
            defaultMetadata.SetAttachedPropertyUsage(usage);
            RadProperty property1 = new RadProperty(name, propertyType, ownerType, defaultMetadata, validateValueCallback);

            defaultMetadata.Seal(property1, null);
            lock (RadProperty.Synchronized)
            {
                RadProperty.PropertyFromName[key1] = property1;
            }

            return(property1);
        }