title: OneWay binding stops working after the target manually updated
body: <p>I have such WPF binding code:</p>
  
  <pre><code>TestModel source = new TestModel();
  TestModel target = new TestModel();
  
  Bind(source, target, BindingMode.OneWay);
  
  source.Attribute = "1";
  AssertAreEqual(target.Attribute, "1");
  
  target.Attribute = "foo";
  
  source.Attribute = "2";
  AssertAreEqual(target.Attribute, "2");
  </code></pre>
  
  <p>The second assertion fails! This seems odd for me.</p>
  
  <p>Also, I tried 'OneWayToSource' instead of 'OneWay', and all works as expected.</p>
  
  <pre><code>Bind(source, target, BindingMode.OneWayToSource);
  
  target.Attribute = "1";
  AssertAreEqual(source.Attribute, "1");
  
  source.Attribute = "foo";
  
  target.Attribute = "2";
  AssertAreEqual(source.Attribute, "2");
  </code></pre>
  
  <p>Other details:</p>
  
  <pre><code>void Bind(TestModel source, TestModel target, BindingMode mode)
  {
      Binding binding = new Binding();
      binding.Source = source;
      binding.Path = new PropertyPath(TestModel.AttributeProperty);
      binding.Mode = mode;
      BindingOperations.SetBinding(target, TestModel.AttributeProperty, binding);
  }
  
  class TestModel : DependencyObject
  {
      public static readonly DependencyProperty AttributeProperty =
          DependencyProperty.Register("Attribute", typeof(string), typeof(TestModel), new PropertyMetadata(null));
  
      public string Attribute
      {
          get { return (string)GetValue(AttributeProperty); }
          set { SetValue(AttributeProperty, value); }
      }
  }
  </code></pre>
  
  <p>What is wrong with my code?</p>