/// <summary> /// Sets the binding between target and source. /// </summary> public static IBindingExpression AddBinding(this IPropertyInjection target, string propertyName, object source, Binding binding) { var scope = target.GetBindingScopeOrDefault(); var expression = new WeakBindingExpression(target, propertyName, source, binding); scope.Add(expression); return expression; }
/// <summary> /// Replaces the source object that is bound to target. /// </summary> public static void ReplaceBindingSource(this IBindingScope scope, object source, string targetPropertyName) { var allBindingExpressions = scope.GetBindingExpressions(); var bindingExpressions = allBindingExpressions.Where(x => string.IsNullOrEmpty(targetPropertyName) || x.TargetProperty.Equals(targetPropertyName)).ToList(); var newExpressions = new List<IBindingExpression>(); foreach (var expression in bindingExpressions) { var newExpression = new WeakBindingExpression(expression.Target, expression.TargetProperty, source, expression.Binding); newExpression.Bind(); newExpressions.Add(newExpression); } // don't remove all bindings, just the ones we replaced foreach (var expression in bindingExpressions) { scope.Remove(expression); } foreach (var expression in newExpressions) { scope.Add(expression); } }
/// <summary> /// Sets the binding between target and source. /// </summary> public static IBindingExpression AddBinding(this IBindingScope scope, object target, string propertyName, object source, Binding binding) { var expression = new WeakBindingExpression(target, propertyName, source, binding); scope.Add(expression); return expression; }
protected virtual IBindingExpression GetExpression() { var binding = new WeakBindingExpression(this.Target, "PropertyA", this.Source, this.Binding); binding.Bind(); return binding; }