Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
 protected virtual IBindingExpression GetExpression()
 {
     var binding = new WeakBindingExpression(this.Target, "PropertyA", this.Source, this.Binding);
     binding.Bind();
     return binding;
 }