Exemplo n.º 1
0
        public static TriggerCondition Register(FrameworkElement element, DependencyProperty property, object value)
        {
            TriggerCondition condition = new TriggerCondition(element, property, value);

            condition.Register();

            return(condition);
        }
Exemplo n.º 2
0
        internal override void Seal()
        {
            if (IsSealed)
            {
                return;
            }

            // Process the _setters collection: Copy values into PropertyValueList and seal the Setter objects.
            ProcessSettersCollection(_setters);

            if (_conditions.Count > 0)
            {
                // Seal conditions
                _conditions.Seal(ValueLookupType.DataTrigger);
            }

            // Build conditions array from collection
            TriggerConditions = new TriggerCondition[_conditions.Count];

            for (int i = 0; i < TriggerConditions.Length; ++i)
            {
                if (_conditions[i].SourceName != null && _conditions[i].SourceName.Length > 0)
                {
                    throw new InvalidOperationException(SR.Get(SRID.SourceNameNotSupportedForDataTriggers));
                }

                TriggerConditions[i] = new TriggerCondition(
                    _conditions[i].Binding,
                    LogicalOp.Equals,
                    _conditions[i].Value);
            }

            // Set conditions array for all property triggers
            for (int i = 0; i < PropertyValues.Count; ++i)
            {
                PropertyValue propertyValue = PropertyValues[i];
                propertyValue.Conditions = TriggerConditions;
                switch (propertyValue.ValueType)
                {
                case PropertyValueType.Trigger:
                    propertyValue.ValueType = PropertyValueType.DataTrigger;
                    break;

                case PropertyValueType.PropertyTriggerResource:
                    propertyValue.ValueType = PropertyValueType.DataTriggerResource;
                    break;

                default:
                    throw new InvalidOperationException(SR.Get(SRID.UnexpectedValueTypeForDataTrigger, propertyValue.ValueType));
                }

                // Put back modified struct
                PropertyValues[i] = propertyValue;
            }

            base.Seal();
        }
Exemplo n.º 3
0
        public override IDataTriggerCondition CreateDataTriggerCondition(FrameworkElement element)
        {
            if (Property == null)
            {
                throw new Granular.Exception("Trigger.Property cannot be null");
            }

            DependencyProperty dependencyProperty = Property.GetDependencyProperty(element.GetType());

            object resolvedValue = Value == null || dependencyProperty.PropertyType.IsInstanceOfType(Value) ? Value : TypeConverter.ConvertValue(Value.ToString(), dependencyProperty.PropertyType, XamlNamespaces.Empty, null);

            FrameworkElement source = SourceName.IsNullOrEmpty() ? element : NameScope.GetTemplateNameScope(element).FindName(SourceName) as FrameworkElement;

            return(TriggerCondition.Register(source, dependencyProperty, resolvedValue));
        }
Exemplo n.º 4
0
        internal sealed override void Seal()
        {
            if (IsSealed)
            {
                return;
            }

            // Process the _setters collection: Copy values into PropertyValueList and seal the Setter objects.
            ProcessSettersCollection(_setters);

            // Freeze the value for the trigger
            StyleHelper.SealIfSealable(_value);

            // Build conditions array from collection
            TriggerConditions = new TriggerCondition[] {
                new TriggerCondition(
                    _binding,
                    LogicalOp.Equals,
                    _value)
            };

            // Set Condition for all data triggers
            for (int i = 0; i < PropertyValues.Count; i++)
            {
                PropertyValue propertyValue = PropertyValues[i];

                propertyValue.Conditions = TriggerConditions;
                switch (propertyValue.ValueType)
                {
                case PropertyValueType.Trigger:
                    propertyValue.ValueType = PropertyValueType.DataTrigger;
                    break;

                case PropertyValueType.PropertyTriggerResource:
                    propertyValue.ValueType = PropertyValueType.DataTriggerResource;
                    break;

                default:
                    throw new InvalidOperationException(SR.Get(SRID.UnexpectedValueTypeForDataTrigger, propertyValue.ValueType));
                }

                // Put back modified struct
                PropertyValues[i] = propertyValue;
            }

            base.Seal();
        }
Exemplo n.º 5
0
        internal sealed override void Seal()
        {
            if (IsSealed)
            {
                return;
            }

            if (_property != null)
            {
                // Ensure valid condition
                if (!_property.IsValidValue(_value))
                {
                    throw new InvalidOperationException(SR.Get(SRID.InvalidPropertyValue, _value, _property.Name));
                }
            }

            // Freeze the condition for the trigger
            StyleHelper.SealIfSealable(_value);

            // Process the _setters collection: Copy values into PropertyValueList and seal the Setter objects.
            ProcessSettersCollection(_setters);

            // Build conditions array from collection
            TriggerConditions = new TriggerCondition[] {
                new TriggerCondition(
                    _property,
                    LogicalOp.Equals,
                    _value,
                    (_sourceName != null) ? _sourceName : StyleHelper.SelfName)
            };

            // Set Condition for all property triggers
            for (int i = 0; i < PropertyValues.Count; i++)
            {
                PropertyValue propertyValue = PropertyValues[i];
                propertyValue.Conditions = TriggerConditions;
                // Put back modified struct
                PropertyValues[i] = propertyValue;
            }

            base.Seal();
        }
Exemplo n.º 6
0
        internal override void Seal()
        {
            if (IsSealed)
            {
                return;
            }

            // Process the _setters collection: Copy values into PropertyValueList and seal the Setter objects.
            ProcessSettersCollection(_setters);

            if (_conditions.Count > 0)
            {
                // Seal conditions
                _conditions.Seal(ValueLookupType.Trigger);
            }

            // Build conditions array from collection
            TriggerConditions = new TriggerCondition[_conditions.Count];

            for (int i = 0; i < TriggerConditions.Length; i++)
            {
                TriggerConditions[i] = new TriggerCondition(
                    _conditions[i].Property,
                    LogicalOp.Equals,
                    _conditions[i].Value,
                    (_conditions[i].SourceName != null) ? _conditions[i].SourceName : StyleHelper.SelfName);
            }

            // Set conditions array for all property triggers
            for (int i = 0; i < PropertyValues.Count; i++)
            {
                PropertyValue propertyValue = PropertyValues[i];
                propertyValue.Conditions = TriggerConditions;
                // Put back modified struct
                PropertyValues[i] = propertyValue;
            }

            base.Seal();
        }
Exemplo n.º 7
0
        internal override void Seal()
        {
            if (IsSealed)
            {
                return;
            }

            // Process the _setters collection: Copy values into PropertyValueList and seal the Setter objects.
            ProcessSettersCollection(_setters);

            if (_conditions.Count > 0)
            {
                // Seal conditions
                _conditions.Seal(ValueLookupType.DataTrigger);
            }

            // Build conditions array from collection
            TriggerConditions = new TriggerCondition[_conditions.Count];

            for (int i = 0; i < TriggerConditions.Length; ++i)
            {
                if (_conditions[i].SourceName != null && _conditions[i].SourceName.Length > 0)
                {
                    throw new InvalidOperationException(SR.Get(SRID.SourceNameNotSupportedForDataTriggers));
                }

                TriggerConditions[i] = new TriggerCondition(
                    _conditions[i].Binding,
                    LogicalOp.Equals,
                    _conditions[i].Value);
            }

            // Set conditions array for all property triggers
            for (int i = 0; i < PropertyValues.Count; ++i)
            {
                PropertyValue propertyValue = PropertyValues[i];
                propertyValue.Conditions = TriggerConditions;
                switch (propertyValue.ValueType)
                {
                    case PropertyValueType.Trigger:
                        propertyValue.ValueType = PropertyValueType.DataTrigger;
                        break;
                    case PropertyValueType.PropertyTriggerResource:
                        propertyValue.ValueType = PropertyValueType.DataTriggerResource;
                        break;
                    default:
                        throw new InvalidOperationException(SR.Get(SRID.UnexpectedValueTypeForDataTrigger, propertyValue.ValueType));
                }

                // Put back modified struct
                PropertyValues[i] = propertyValue;
            }

            base.Seal();
        }
Exemplo n.º 8
0
        internal override void Seal()
        {
            if (IsSealed)
            { 
                return;
            } 
 
            // Process the _setters collection: Copy values into PropertyValueList and seal the Setter objects.
            ProcessSettersCollection(_setters); 

            if (_conditions.Count > 0)
            {
                // Seal conditions 
                _conditions.Seal(ValueLookupType.Trigger);
            } 
 
            // Build conditions array from collection
            TriggerConditions = new TriggerCondition[_conditions.Count]; 

            for (int i = 0; i < TriggerConditions.Length; i++)
            {
                TriggerConditions[i] = new TriggerCondition( 
                    _conditions[i].Property,
                    LogicalOp.Equals, 
                    _conditions[i].Value, 
                    (_conditions[i].SourceName != null) ? _conditions[i].SourceName : StyleHelper.SelfName);
            } 

            // Set conditions array for all property triggers
            for (int i = 0; i < PropertyValues.Count; i++)
            { 
                PropertyValue propertyValue = PropertyValues[i];
                propertyValue.Conditions = TriggerConditions; 
                // Put back modified struct 
                PropertyValues[i] = propertyValue;
            } 

            base.Seal();
        }
Exemplo n.º 9
0
 // Token: 0x0600095E RID: 2398 RVA: 0x00020DBE File Offset: 0x0001EFBE
 internal TriggerCondition(BindingBase binding, LogicalOp logicalOp, object value)
 {
     this = new TriggerCondition(binding, logicalOp, value, "~Self");
 }
Exemplo n.º 10
0
 // Token: 0x06000963 RID: 2403 RVA: 0x00020F20 File Offset: 0x0001F120
 internal bool TypeSpecificEquals(TriggerCondition value)
 {
     return(this.Property == value.Property && this.Binding == value.Binding && this.LogicalOp == value.LogicalOp && this.Value == value.Value && this.SourceName == value.SourceName);
 }
Exemplo n.º 11
0
        internal sealed override void Seal()
        { 
            if (IsSealed)
            { 
                return; 
            }
 
            if (_property != null)
            {
                // Ensure valid condition
                if (!_property.IsValidValue(_value)) 
                {
                    throw new InvalidOperationException(SR.Get(SRID.InvalidPropertyValue, _value, _property.Name )); 
                } 
            }
 
            // Freeze the condition for the trigger
            StyleHelper.SealIfSealable(_value);

            // Process the _setters collection: Copy values into PropertyValueList and seal the Setter objects. 
            ProcessSettersCollection(_setters);
 
            // Build conditions array from collection 
            TriggerConditions = new TriggerCondition[] {
                new TriggerCondition( 
                    _property,
                    LogicalOp.Equals,
                    _value,
                    (_sourceName != null) ? _sourceName : StyleHelper.SelfName) }; 

            // Set Condition for all property triggers 
            for (int i = 0; i < PropertyValues.Count; i++) 
            {
                PropertyValue propertyValue = PropertyValues[i]; 
                propertyValue.Conditions = TriggerConditions;
                // Put back modified struct
                PropertyValues[i] = propertyValue;
            } 

            base.Seal(); 
        } 
Exemplo n.º 12
0
        public static TriggerCondition Register(FrameworkElement element, DependencyProperty property, object value)
        {
            TriggerCondition condition = new TriggerCondition(element, property, value);
            condition.Register();

            return condition;
        }
Exemplo n.º 13
0
        internal sealed override void Seal()
        {
            if (IsSealed)
            {
                return;
            }

            // Process the _setters collection: Copy values into PropertyValueList and seal the Setter objects.
            ProcessSettersCollection(_setters);

            // Freeze the value for the trigger
            StyleHelper.SealIfSealable(_value);

            // Build conditions array from collection
            TriggerConditions = new TriggerCondition[] {
                new TriggerCondition(
                    _binding,
                    LogicalOp.Equals,
                    _value) };

            // Set Condition for all data triggers
            for (int i = 0; i < PropertyValues.Count; i++)
            {
                PropertyValue propertyValue = PropertyValues[i];

                propertyValue.Conditions = TriggerConditions;
                switch (propertyValue.ValueType)
                {
                    case PropertyValueType.Trigger:
                        propertyValue.ValueType = PropertyValueType.DataTrigger;
                        break;
                    case PropertyValueType.PropertyTriggerResource:
                        propertyValue.ValueType = PropertyValueType.DataTriggerResource;
                        break;
                    default:
                        throw new InvalidOperationException(SR.Get(SRID.UnexpectedValueTypeForDataTrigger, propertyValue.ValueType));
                }

                // Put back modified struct
                PropertyValues[i] = propertyValue;
            }

            base.Seal();
        }
Exemplo n.º 14
0
 // Implemented for #1038821, FxCop ConsiderOverridingEqualsAndOperatorEqualsOnValueTypes
 //  Called from ChildValueLookup.Equals, avoid boxing by not using the generic object-based Equals.
 internal bool TypeSpecificEquals( TriggerCondition value )
 {
     if( Property            == value.Property &&
         Binding             == value.Binding &&
         LogicalOp           == value.LogicalOp &&
         Value               == value.Value &&
         SourceName          == value.SourceName )
     {
         return true;
     }
     return false;
 }