static void Main(string[] args) { //#region plain props //ParentDataClass parentDataObj = new ParentDataClass(); //parentDataObj.TheData = new DataClass { MyStringProp = "Hello World" }; //object targetObj = new object(); //OneWayPropertyBindingBase<object, object> binding = new OneWayPropertyBindingBase<object, object>(); //CompositePathGetter pathGetter = // new CompositePathGetter // ( // new BindingPathLink<object>[] // { // new BindingPathLink<object>("TheData"), // new BindingPathLink<object>("MyStringProp"), // }, // "blabla" // ); //pathGetter.TheObj = parentDataObj; //binding.SourcePropertyGetter = pathGetter; //binding.TargetPropertySetter = new APropSetter<object>(targetObj, MyAProperty); //binding.Bind(); //Console.WriteLine(MyAProperty.GetProperty(targetObj)); //parentDataObj.TheData.MyStringProp = "Hi World"; //Console.WriteLine(MyAProperty.GetProperty(targetObj)); //parentDataObj.TheData = new DataClass { MyStringProp = "bye bye" }; //Console.WriteLine(MyAProperty.GetProperty(targetObj)); //parentDataObj.TheData = null; //Console.WriteLine(MyAProperty.GetProperty(targetObj)); //#endregion plain props #region plain and attached props TopLevelObj parentDataObj = new TopLevelObj(); DataClass dataObject = new DataClass{ MyStringProp = "Hello World"}; MyAProperty.SetProperty(parentDataObj, dataObject); object targetObj = new object(); OneWayPropertyBinding<object, object> binding = new OneWayPropertyBinding<object, object>(); CompositePathGetter<object> pathGetter = new CompositePathGetter<object> ( new BindingPathLink<object>[] { new BindingPathLink<object>(MyAProperty), new BindingPathLink<object>("MyStringProp") }, "blabla" ); pathGetter.TheObj = parentDataObj; binding.SourcePropertyGetter = pathGetter; binding.TargetPropertySetter = new APropSetter<object>(targetObj, MyAProperty); binding.Bind(); Console.WriteLine(MyAProperty.GetProperty(targetObj)); dataObject.MyStringProp = "Hi World"; Console.WriteLine(MyAProperty.GetProperty(targetObj)); MyAProperty.SetProperty( parentDataObj, new DataClass { MyStringProp = "bye bye" }); Console.WriteLine(MyAProperty.GetProperty(targetObj)); MyAProperty.ClearAProperty(parentDataObj); Console.WriteLine(MyAProperty.GetProperty(targetObj)); #endregion plain and attached props }
static void Main(string[] args) { /* // first special case - composite path getter and setter with only one link // create source object DataClass sourceDataObj = new DataClass { MyStringProp = "Hello World" }; // create target object DataClass targetDataObject = new DataClass(); // create the binding OneWayPropertyBindingBase<object, object> binding = new OneWayPropertyBindingBase<object, object>(); CompositePathGetter sourcePathGetter = new CompositePathGetter ( new BindingPathLink<object>[] { new BindingPathLink<object>("MyStringProp"), }, "A Default String" ); sourcePathGetter.TheObj = sourceDataObj; binding.SourcePropertyGetter = sourcePathGetter; CompositePathSetter targetPathSetter = new CompositePathSetter ( new BindingPathLink<object>[] { new BindingPathLink<object>("MyStringProp") } ); targetPathSetter.TheObj = targetDataObject; binding.TargetPropertySetter = targetPathSetter; binding.Bind(); Console.WriteLine(targetDataObject.MyStringProp); sourceDataObj.MyStringProp = "Hi World"; Console.WriteLine(targetDataObject.MyStringProp); */ // second special case - source composite getter with no links at all // (should simply pass the source object to the target); CompositePathGetter<object> sourcePathGetter = new CompositePathGetter<object>(new List<BindingPathLink<object>>(), "a default string"); sourcePathGetter.TheObj = "Hello World"; // create target object DataClass targetDataObject = new DataClass(); OneWayPropertyBinding<object, object> binding = new OneWayPropertyBinding<object, object>(); binding.SourcePropertyGetter = sourcePathGetter; CompositePathSetter<object> targetPathSetter = new CompositePathSetter<object> ( new BindingPathLink<object>[] { new BindingPathLink<object>("MyStringProp") } ); targetPathSetter.TheObj = targetDataObject; binding.TargetPropertySetter = targetPathSetter; binding.Bind(); Console.WriteLine(targetDataObject.MyStringProp); sourcePathGetter.TheObj = "Hi World"; Console.WriteLine(targetDataObject.MyStringProp); }
static void Main(string[] args) { // create source object ParentDataClass sourceDataObj = new ParentDataClass(); sourceDataObj.TheData = new DataClass { MyStringProp = "Hello World" }; // create target object ParentDataClass targetDataObject = new ParentDataClass(); targetDataObject.TheData = new DataClass(); // create the binding OneWayPropertyBindingBase<object, object> binding = new OneWayPropertyBindingBase<object, object>(); CompositePathGetter sourcePathGetter = new CompositePathGetter ( new BindingPathLink<object>[] { new BindingPathLink<object>("TheData"), new BindingPathLink<object>("MyStringProp"), }, "A Default String" ); sourcePathGetter.TheObj = sourceDataObj; binding.SourcePropertyGetter = sourcePathGetter; CompositePathSetter targetPathSetter = new CompositePathSetter ( new BindingPathLink<object>[] { new BindingPathLink<object>("TheData"), new BindingPathLink<object>("MyStringProp") } ); targetPathSetter.TheObj = targetDataObject; binding.TargetPropertySetter = targetPathSetter; binding.Bind(); Console.WriteLine(targetDataObject.TheData.MyStringProp); sourceDataObj.TheData.MyStringProp = "Hi World"; Console.WriteLine(targetDataObject.TheData.MyStringProp); sourceDataObj.TheData = new DataClass { MyStringProp = "bye bye" }; Console.WriteLine(targetDataObject.TheData.MyStringProp); sourceDataObj.TheData = null; Console.WriteLine(targetDataObject.TheData.MyStringProp); targetDataObject.TheData = new DataClass(); Console.WriteLine(targetDataObject.TheData.MyStringProp); targetDataObject.TheData.MyStringProp = "Hi"; Console.WriteLine(targetDataObject.TheData.MyStringProp); targetDataObject.TheData = new DataClass(); Console.WriteLine(targetDataObject.TheData.MyStringProp); }
public void Bind() { _binding = new OneWayPropertyBinding<object, object>(); //_sourcePathGetter = new DependencyPropertyGetter<object> //( // MainWindow.MyTestDPPropertyProperty //); _sourcePathGetter = new CompositePathGetter<object> ( new BindingPathLink<object>[] { new VisualBindingPathLink<object>(MainWindow.MyTestDPPropertyProperty) }, "The default value" ); _sourcePathGetter.TheObj = this; _binding.SourcePropertyGetter = _sourcePathGetter; CompositePathSetter<object> targetPathSetter = new CompositePathSetter<object> ( new BindingPathLink<object>[] { new BindingPathLink<object>("MyStringProp") } ); targetPathSetter.TheObj = _myDataObj; _binding.TargetPropertySetter = targetPathSetter; _binding.Bind(); }