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)); } }
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)); } }
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); }
public InstancedBinding ItemsSelector(object item) { var obs = new ExpressionObserver(item, nameof(Node.Children)); return(InstancedBinding.OneWay(obs)); }
/// <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))); }