static void Bind_Dependency_TwoWay() { // [STAThread] is unnecessary. // Binding Source (Any object). var person = new Person2 { Id = 123, Name = "Taro" }; // Binding Target (DependencyObject). var target = new Person2 { Id = 999, Name = "Default" }; Console.WriteLine(target.Name); // Binds target to source. // Default mode is OneWay. var binding = new Binding(nameof(person.Name)) { Source = person, Mode = BindingMode.TwoWay }; BindingOperations.SetBinding(target, Person2.NameProperty, binding); Console.WriteLine(target.Name); // Changes source value. person.Name = "Jiro"; Console.WriteLine(target.Name); // Changes target value. target.Name = "Saburo"; Console.WriteLine(person.Name); }