Esempio n. 1
0
        private void BindToTemplatedParent(AvaloniaProperty target, AvaloniaProperty source)
        {
            //if (!HasNonDefaultValue(target))
            {
                //Binding binding = new Binding();
                //binding.RelativeSource = new RelativeSource(RelativeSourceMode.TemplatedParent);
                //binding.Path = source.p//new PropertyPath(source);
                //SetBinding(target, binding);
                try
                {
                    var sourceBinding = this.GetSubject(source);

                    InstancedBinding instancedBinding = new InstancedBinding(sourceBinding, BindingMode.TwoWay, BindingPriority.TemplatedParent);
                    BindingOperations.Apply(this, target, instancedBinding, TemplatedParent);
                }
                catch (Exception ex)
                {
                }
                //Bind(target, ObservableEx.SingleValue(source));
            }
        }
Esempio n. 2
0
        private InstancedBinding Clone(InstancedBinding sourceInstance, BindingMode mode, IStyle style, IObservable <bool> activator)
        {
            if (activator != null)
            {
                var description = style?.ToString();

                switch (mode)
                {
                case BindingMode.OneTime:
                    if (sourceInstance.Observable != null)
                    {
                        var activated = new ActivatedObservable(activator, sourceInstance.Observable, description);
                        return(InstancedBinding.OneTime(activated, BindingPriority.StyleTrigger));
                    }
                    else
                    {
                        var activated = new ActivatedValue(activator, sourceInstance.Value, description);
                        return(InstancedBinding.OneTime(activated, BindingPriority.StyleTrigger));
                    }

                case BindingMode.OneWay:
                {
                    var activated = new ActivatedObservable(activator, sourceInstance.Observable, description);
                    return(InstancedBinding.OneWay(activated, BindingPriority.StyleTrigger));
                }

                default:
                {
                    var activated = new ActivatedSubject(activator, sourceInstance.Subject, description);
                    return(new InstancedBinding(activated, sourceInstance.Mode, BindingPriority.StyleTrigger));
                }
                }
            }
            else
            {
                return(sourceInstance.WithPriority(BindingPriority.Style));
            }
        }
Esempio n. 3
0
        InstancedBinding?IBinding.Initiate(
            IAvaloniaObject target,
            AvaloniaProperty targetProperty,
            object anchor,
            bool enableDataValidation)
        {
            if (ResourceKey is null)
            {
                return(null);
            }

            var control = target as IStyledElement ?? _anchor as IStyledElement;

            if (control != null)
            {
                return(InstancedBinding.OneWay(control.GetResourceObservable(ResourceKey)));
            }
            else if (_resourceProvider is object)
            {
                return(InstancedBinding.OneWay(_resourceProvider.GetResourceObservable(ResourceKey)));
            }

            return(null);
        }
Esempio n. 4
0
            public InstancedBinding ItemsSelector(object item)
            {
                var obs = new ExpressionObserver(item, nameof(Node.Children));

                return(InstancedBinding.OneWay(obs));
            }
Esempio n. 5
0
 /// <summary>
 /// Selects the child items of an item.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <returns>The child items, or null if no child items.</returns>
 public InstancedBinding ItemsSelector(object item)
 {
     return(InstancedBinding.OneTime(this?._itemsSelector(item)));
 }
            public InstancedBinding ItemsSelector(object item)
            {
                var obs = ExpressionObserver.Create(item, o => (o as Node).Children);

                return(InstancedBinding.OneWay(obs));
            }
 public InstancedBinding Initiate(IAvaloniaObject target, AvaloniaProperty targetProperty, object anchor = null, bool enableDataValidation = false)
 {
     return(InstancedBinding.OneWay(new StaticBindingObservable(Value)));
 }