public static void Main() { // we want to bind City property on the // source object to City property on the // target object Address sourceAddr = new Address(); sourceAddr.City = "Miami"; Address targetAddr = new Address(); StatelessBinding<Address> binding = new StatelessBinding<Address> ( (addr) => addr.City, (addr, cityObj) => addr.City = cityObj as string ); // this should bind them so, that // 1. they are sync'ed at the binding time // 2. the target is updated every time the source // is updated (since the source is notifiable) binding.AddObjsToBinding(sourceAddr, targetAddr); Console.WriteLine($"The Target City is '{targetAddr.City}'"); sourceAddr.City = "Holywood"; Console.WriteLine("\nAfter the change:"); Console.WriteLine($"The Target City is '{targetAddr.City}'"); }
public static void Main() { Address sourceAddr = new Address(); sourceAddr.City = "Miami"; sourceAddr.Street = "Sterling Rd"; MapBindingTreeNodeContainer addressNodeContainer = new MapBindingTreeNodeContainer(); addressNodeContainer.TheObj = sourceAddr; addressNodeContainer .AddNewMapChild ( new PlainPropBindingPathLink<object>(nameof(Address.City)) ); addressNodeContainer .AddNewMapChild ( new PlainPropBindingPathLink<object>(nameof(Address.Street)) ); Contact sourceContact = new Contact() { FirstName = "Nick", HomeAddress = sourceAddr }; MapBindingTreeNodeContainer contactNodeContainer = new MapBindingTreeNodeContainer(); contactNodeContainer.AddChild ( new PlainPropBindingPathLink<object>(nameof(Contact.HomeAddress)), addressNodeContainer ); contactNodeContainer.AddNewMapChild ( new PlainPropBindingPathLink<object>(nameof(Contact.FirstName)) ); contactNodeContainer.TheObj = sourceContact; // change home address sourceAddr = new Address(); sourceAddr.City = "Boston"; sourceAddr.Street = "Blenford Rd"; sourceContact.HomeAddress = sourceAddr; }
public static void Main() { Address address = new Address { City = "Boston" }; Contact aContact = new Contact { HomeAddress = address }; PrintModel printModel = new PrintModel { HomeCityPrintObj = new PrintProp("Home City") }; OneWayPropertyBinding homeCityBinding = new OneWayPropertyBinding { SourcePropertyGetter = new CompositePathGetter<object> ( new List<BindingPathLink<object>> { new BindingPathLink<object>("HomeAddress"), new BindingPathLink<object>("City") }, null ) { TheObj = aContact } , TargetPropertySetter = new CompositePathSetter<object> ( new List<BindingPathLink<object>> { new BindingPathLink<object>("HomeCityPrintObj"), new BindingPathLink<object>("PropValueToPrint") } ) { TheObj = printModel } }; homeCityBinding.Bind(); printModel.Print(); address.City = "Miami"; printModel.Print(); }
static void Main() { #region Plain Property to Plain Property Binding Console.WriteLine("Plain Prop to Plain Prop Two Way Binding Test"); // source object Address address = new Address { City = "Boston" }; // target object PropDisplayerAndModifyer cityPropertyDisplayerAndModifier = new PropDisplayerAndModifyer("City"); TwoWayPropertyBinding<string, string> cityBinding = new TwoWayPropertyBinding<string, string>(); // set the forward getters and setters cityBinding.ForwardSourcePropertyGetter = new PlainPropWithDefaultGetter<string>("City") { TheObj = address }; cityBinding.ForwardTargetPropertySetter = new PlainPropertySetter<string>("PropValue") { TheObj = cityPropertyDisplayerAndModifier }; // set the reverse getters and setters cityBinding.ReverseSourcePropertyGetter = new PlainPropWithDefaultGetter<string>("PropValue") { TheObj = cityPropertyDisplayerAndModifier }; cityBinding.ReverseTargetPropertySetter = new PlainPropertySetter<string>("City") { TheObj = address }; Console.WriteLine("Before binding is set the City property should be null on printProp object"); cityPropertyDisplayerAndModifier.Print(); // bind the source to the target cityBinding.Bind(); Console.WriteLine("After binding is set the City property should be 'Boston' on printProp object"); cityPropertyDisplayerAndModifier.Print(); address.City = "Brookline"; Console.WriteLine("After source's property was changed to 'Brookline', the target property also changes"); cityPropertyDisplayerAndModifier.Print(); cityPropertyDisplayerAndModifier.PropValue = "Allston"; Console.WriteLine("Address: '" + address.City + "'"); Console.WriteLine("After target's property was changed to 'Allston', the source property also changes"); #endregion Plain Property to Plain Property Bindin }