public void WhenDisposingTheExpression_ThenTargetObjectEventIsNull()
        {
            this.SetUp();
            var binding = new Binding("Property1");
            var expression = new EventTriggeredBindingExpression<EventTargetObject, EventArgs>(this.Target, "PropertyA", "PropertyChanged", this.Source, binding);
            expression.Bind();

            expression.Dispose();

            Assert.AreEqual(this.Target.HasEventHandler, false);
        }
        public void WhenBindingWithAnEvent_ThenTheSourcePropertyIsUpdated()
        {
            this.SetUp();
            var binding = new Binding("Property1");
            var expression = new EventTriggeredBindingExpression<EventTargetObject, EventArgs>(this.Target, "PropertyA", "PropertyChanged", this.Source, binding);
            expression.Bind();

            this.Target.PropertyA = Guid.NewGuid().ToString();

            Assert.AreEqual(this.Target.PropertyA, this.Source.Property1);
        }
 public static IBindingExpression AddEventTriggeredBinding(this IBindingScope scope, object target, string targetPropertyName, string eventName, object source, string sourcePropertyName)
 {
     var expression = new EventTriggeredBindingExpression(target, targetPropertyName, eventName, source, new Binding(sourcePropertyName));
     scope.Add(expression);
     return expression;
 }