Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
        }