示例#1
0
        internal void UnApply(BindableObject target, bool fromStyle = false)
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target));
            }
            if (Property == null)
            {
                return;
            }

            object actual = target.GetValue(Property);

            if (!Equals(actual, Value) && !(Value is Binding) && !(Value is DynamicResource))
            {
                //Do not reset default value if the value has been changed
                _originalValues.Remove(target);
                return;
            }

            object defaultValue;

            if (_originalValues.TryGetValue(target, out defaultValue))
            {
                //reset default value, unapply bindings and dynamicResource
                target.SetValue(Property, defaultValue, fromStyle);
                _originalValues.Remove(target);
            }
            else
            {
                target.ClearValue(Property);
            }
        }
示例#2
0
        static void OnTransformChanged(BindableObject bindable, object oldValue, object newValue)
        {
            if ((string)newValue == "none")
            {
                bindable.ClearValue(TranslationXProperty);
                bindable.ClearValue(TranslationYProperty);
                bindable.ClearValue(RotationProperty);
                bindable.ClearValue(RotationXProperty);
                bindable.ClearValue(RotationYProperty);
                bindable.ClearValue(ScaleProperty);
                bindable.ClearValue(ScaleXProperty);
                bindable.ClearValue(ScaleYProperty);
                return;
            }
            var transforms = ((string)newValue).Split(' ');

            foreach (var transform in transforms)
            {
                if (string.IsNullOrEmpty(transform) || transform.IndexOf('(') < 0 || transform.IndexOf(')') < 0)
                {
                    throw new FormatException("Format for transform is 'none | transform(value) [transform(value) ]*'");
                }
                var    transformName = transform.Substring(0, transform.IndexOf('('));
                var    value = transform.Substring(transform.IndexOf('(') + 1, transform.IndexOf(')') - transform.IndexOf('(') - 1);
                double translationX, translationY, scaleX, scaleY, rotateX, rotateY, rotate;
                if (transformName.StartsWith("translateX", StringComparison.OrdinalIgnoreCase) && double.TryParse(value, out translationX))
                {
                    bindable.SetValue(TranslationXProperty, translationX);
                }
                else if (transformName.StartsWith("translateY", StringComparison.OrdinalIgnoreCase) && double.TryParse(value, out translationY))
                {
                    bindable.SetValue(TranslationYProperty, translationY);
                }
                else if (transformName.StartsWith("translate", StringComparison.OrdinalIgnoreCase))
                {
                    var translate = value.Split(',');
                    if (double.TryParse(translate[0], out translationX) && double.TryParse(translate[1], out translationY))
                    {
                        bindable.SetValue(TranslationXProperty, translationX);
                        bindable.SetValue(TranslationYProperty, translationY);
                    }
                }
                else if (transformName.StartsWith("scaleX", StringComparison.OrdinalIgnoreCase) && double.TryParse(value, out scaleX))
                {
                    bindable.SetValue(ScaleXProperty, scaleX);
                }
                else if (transformName.StartsWith("scaleY", StringComparison.OrdinalIgnoreCase) && double.TryParse(value, out scaleY))
                {
                    bindable.SetValue(ScaleYProperty, scaleY);
                }
                else if (transformName.StartsWith("scale", StringComparison.OrdinalIgnoreCase))
                {
                    var scale = value.Split(',');
                    if (double.TryParse(scale[0], out scaleX) && double.TryParse(scale[1], out scaleY))
                    {
                        bindable.SetValue(ScaleXProperty, scaleX);
                        bindable.SetValue(ScaleYProperty, scaleY);
                    }
                }
                else if (transformName.StartsWith("rotateX", StringComparison.OrdinalIgnoreCase) && double.TryParse(value, out rotateX))
                {
                    bindable.SetValue(RotationXProperty, rotateX);
                }
                else if (transformName.StartsWith("rotateY", StringComparison.OrdinalIgnoreCase) && double.TryParse(value, out rotateY))
                {
                    bindable.SetValue(RotationYProperty, rotateY);
                }
                else if (transformName.StartsWith("rotate", StringComparison.OrdinalIgnoreCase) && double.TryParse(value, out rotate))
                {
                    bindable.SetValue(RotationProperty, rotate);
                }
                else
                {
                    throw new FormatException("Invalid transform name");
                }
            }
        }
示例#3
0
 internal override void TearDown(BindableObject bindable)
 {
     bindable.RemoveBinding(_boundProperty);
     bindable.ClearValue(_boundProperty);
 }
示例#4
0
 internal override void TearDown(BindableObject bindable)
 {
     bindable.ClearValue(_stateProperty);
     bindable.PropertyChanged -= OnAttachedObjectPropertyChanged;
 }