Beispiel #1
0
        public static IEnumerable <Func <IPerson, IAddress, BindingBase> > GetBindingFactories()
        {
            yield return((targetObject, sourceObject) => new Binding(targetObject, "Name", sourceObject, "Line1"));

            yield return((targetObject, sourceObject) => new TypedBinding <IPerson, IAddress>(targetObject, x => x.Name, sourceObject, x => x.Line1));

            yield return(delegate(IPerson targetObject, IAddress sourceObject)
            {
                var multiBinding = new MultiBinding(targetObject, "Name");
                multiBinding.Sources.Add(new Binding()
                {
                    SourceObject = sourceObject, SourcePath = "Line1"
                });
                multiBinding.Converter = new NameAndAddressMultiValueConverter();
                return multiBinding;
            });

            yield return(delegate(IPerson targetObject, IAddress sourceObject)
            {
                var typedMultiBinding = new TypedMultiBinding <IPerson>(targetObject, x => x.Name);
                typedMultiBinding.Sources.Add(new Binding()
                {
                    SourceObject = sourceObject, SourcePath = "Line1"
                });
                typedMultiBinding.Converter = new NameAndAddressMultiValueConverter();
                return typedMultiBinding;
            });
        }
        public static IEnumerable <BindingBase> GetBindings(WeakReference targetObject, WeakReference sourceObject)
        {
            yield return(new Binding(targetObject.Target, "Address.Line2", sourceObject.Target, "Line1"));

            yield return(new TypedBinding <IPerson, IAddress>(targetObject.Target as IPerson, x => x.Address.Line2, sourceObject.Target as IAddress, x => x.Line1));

            var multiBinding = new MultiBinding(targetObject.Target, "Name");

            multiBinding.Sources.Add(new Binding()
            {
                SourceObject = sourceObject.Target, SourcePath = "Line1"
            });
            multiBinding.Sources.Add(new Binding()
            {
                SourceObject = sourceObject.Target, SourcePath = "Line2"
            });
            multiBinding.Converter = new NameAndAddressMultiValueConverter();
            yield return(multiBinding);

            var multiTypedBinding = new TypedMultiBinding <IPerson>(targetObject.Target as IPerson, x => x.Name);

            multiTypedBinding.Sources.Add(new Binding()
            {
                SourceObject = sourceObject.Target, SourcePath = "Line1"
            });
            multiTypedBinding.Sources.Add(new Binding()
            {
                SourceObject = sourceObject.Target, SourcePath = "Line2"
            });
            multiTypedBinding.Converter = new NameAndAddressMultiValueConverter();
            yield return(multiTypedBinding);
        }
        public static IEnumerable <Func <IPerson, IAddress, MultiSourceBinding> > GetBindingFactories()
        {
            yield return(delegate(IPerson targetObject, IAddress sourceObject)
            {
                var binding = new MultiBinding(targetObject, "Name");
                binding.Sources.Add(new Binding()
                {
                    SourceObject = sourceObject, SourcePath = "Line1"
                });
                binding.Sources.Add(new Binding()
                {
                    SourceObject = sourceObject, SourcePath = "Line2"
                });
                return binding;
            });

            yield return(delegate(IPerson targetObject, IAddress sourceObject)
            {
                var binding = new TypedMultiBinding <IPerson>(targetObject, x => x.Name);
                binding.Sources.Add(new Binding()
                {
                    SourceObject = sourceObject, SourcePath = "Line1"
                });
                binding.Sources.Add(new Binding()
                {
                    SourceObject = sourceObject, SourcePath = "Line2"
                });
                return binding;
            });
        }
		public static IEnumerable<Func<IPerson, IAddress, MultiSourceBinding>> GetBindingFactories()
		{
			yield return delegate(IPerson targetObject, IAddress sourceObject)
			{
				var binding = new MultiBinding(targetObject, "Name");
				binding.Sources.Add(new Binding() { SourceObject = sourceObject, SourcePath = "Line1" });
				binding.Sources.Add(new Binding() { SourceObject = sourceObject, SourcePath = "Line2" });
				return binding;
			};

			yield return delegate(IPerson targetObject, IAddress sourceObject)
			{
				var binding = new TypedMultiBinding<IPerson>(targetObject, x => x.Name);
				binding.Sources.Add(new Binding() { SourceObject = sourceObject, SourcePath = "Line1" });
				binding.Sources.Add(new Binding() { SourceObject = sourceObject, SourcePath = "Line2" });
				return binding;
			};
		}
		public static IEnumerable<BindingBase> GetBindings(WeakReference targetObject, WeakReference sourceObject)
		{
			yield return new Binding(targetObject.Target, "Address.Line2", sourceObject.Target, "Line1");

			yield return new TypedBinding<IPerson, IAddress>(targetObject.Target as IPerson, x => x.Address.Line2, sourceObject.Target as IAddress, x => x.Line1);

			var multiBinding = new MultiBinding(targetObject.Target, "Name");
			multiBinding.Sources.Add(new Binding() { SourceObject = sourceObject.Target, SourcePath = "Line1" });
			multiBinding.Sources.Add(new Binding() { SourceObject = sourceObject.Target, SourcePath = "Line2" });
			multiBinding.Converter = new NameAndAddressMultiValueConverter();
			yield return multiBinding;

			var multiTypedBinding = new TypedMultiBinding<IPerson>(targetObject.Target as IPerson, x => x.Name);
			multiTypedBinding.Sources.Add(new Binding() { SourceObject = sourceObject.Target, SourcePath = "Line1" });
			multiTypedBinding.Sources.Add(new Binding() { SourceObject = sourceObject.Target, SourcePath = "Line2" });
			multiTypedBinding.Converter = new NameAndAddressMultiValueConverter();
			yield return multiTypedBinding;
		}
        public static IEnumerable<Func<IPerson, IAddress, BindingBase>> GetBindingFactories()
        {
            yield return delegate(IPerson targetObject, IAddress sourceObject)
            {
                //the second-level binding is bound to Line1, Line2, and Line3 of the Address object, all of which are separated by commas
                var secondLevelBinding = new MultiBinding();
                secondLevelBinding.Sources.Add(new Binding() { SourceObject = sourceObject, SourcePath = "Line1" });
                secondLevelBinding.Sources.Add(new Binding() { SourceObject = sourceObject, SourcePath = "Line2" });
                secondLevelBinding.Sources.Add(new Binding() { SourceObject = sourceObject, SourcePath = "Line3" });
                secondLevelBinding.Converter = new SeparatorConverter(",");

                //Person.Details is bound to their Name, Age, Gender, and the full address as determined by the second level binding, all
                //of which are separated by tildes
                var firstLevelBinding = new MultiBinding(targetObject, "Details");
                firstLevelBinding.Sources.Add(new Binding() { SourceObject = targetObject, SourcePath = "Name" });
                firstLevelBinding.Sources.Add(new Binding() { SourceObject = targetObject, SourcePath = "Age" });
                firstLevelBinding.Sources.Add(new Binding() { SourceObject = targetObject, SourcePath = "Gender", Converter = new GenderConverter() });
                firstLevelBinding.Sources.Add(secondLevelBinding);
                firstLevelBinding.Converter = new SeparatorConverter("~");

                return firstLevelBinding;
            };

            yield return delegate(IPerson targetObject, IAddress sourceObject)
            {
                //the second-level binding is bound to Line1, Line2, and Line3 of the Address object, all of which are separated by commas
                var secondLevelBinding = new TypedMultiBinding<object>();
                secondLevelBinding.Sources.Add(new TypedBinding<object, IAddress>() { SourceObject = sourceObject, SourceExpression = x => x.Line1 });
                secondLevelBinding.Sources.Add(new TypedBinding<object, IAddress>() { SourceObject = sourceObject, SourceExpression = x => x.Line2 });
                secondLevelBinding.Sources.Add(new TypedBinding<object, IAddress>() { SourceObject = sourceObject, SourceExpression = x => x.Line3 });
                secondLevelBinding.Converter = new SeparatorConverter(",");

                //Person.Details is bound to their Name, Age, Gender, and the full address as determined by the second level binding, all
                //of which are separated by tildes
                var firstLevelBinding = new TypedMultiBinding<IPerson>(targetObject, x => x.Details);
                firstLevelBinding.Sources.Add(new TypedBinding<object, IPerson>() { SourceObject = targetObject, SourceExpression = x => x.Name });
                firstLevelBinding.Sources.Add(new TypedBinding<object, IPerson>() { SourceObject = targetObject, SourceExpression = x => x.Age });
                firstLevelBinding.Sources.Add(new TypedBinding<object, IPerson>() { SourceObject = targetObject, SourceExpression = x => x.Gender, Converter = new GenderConverter() });
                firstLevelBinding.Sources.Add(secondLevelBinding);
                firstLevelBinding.Converter = new SeparatorConverter("~");

                return firstLevelBinding;
            };
        }
Beispiel #7
0
        private static void AddSimpleTypedMultiBinding(Customer customer, OutputSink outputSink, BindingManager bindingManager)
        {
            #region Simple TypedMultiBinding

            var binding = new TypedMultiBinding <OutputSink>(outputSink, o => o.Output);
            binding.Sources.Add(new TypedBinding <object, Customer>(null, null, customer, c => c.Name));
            binding.Sources.Add(new TypedBinding <object, Customer>(null, null, customer, c => c.Gender));
            binding.Sources.Add(new TypedBinding <object, Customer>(null, null, customer, c => c.BirthDate));
            binding.Sources.Add(new TypedBinding <object, Customer>(null, null, customer, c => c.Address.Line1));
            binding.Sources.Add(new TypedBinding <object, Customer>(null, null, customer, c => c.Address.Line2));
            binding.Sources.Add(new TypedBinding <object, Customer>(null, null, customer, c => c.Address.Line3));
            binding.Sources.Add(new TypedBinding <object, Customer>(null, null, customer, c => c.Address.Line4));
            binding.Sources.Add(new TypedBinding <object, Customer>(null, null, customer, c => c.Address.PostCode));
            binding.Mode      = BindingMode.OneWayToTarget;
            binding.Converter = new OutputConverter();

            bindingManager.Bindings.Add(binding);

            #endregion
        }
		public static IEnumerable<Func<IPerson, IAddress, BindingBase>> GetBindingFactories()
		{
			yield return (targetObject, sourceObject) => new Binding(targetObject, "Name", sourceObject, "Line1");

			yield return (targetObject, sourceObject) => new TypedBinding<IPerson, IAddress>(targetObject, x => x.Name, sourceObject, x => x.Line1);

			yield return delegate(IPerson targetObject, IAddress sourceObject)
			{
				var multiBinding = new MultiBinding(targetObject, "Name");
				multiBinding.Sources.Add(new Binding() { SourceObject = sourceObject, SourcePath = "Line1" });
				multiBinding.Converter = new NameAndAddressMultiValueConverter();
				return multiBinding;
			};

			yield return delegate(IPerson targetObject, IAddress sourceObject)
			{
				var typedMultiBinding = new TypedMultiBinding<IPerson>(targetObject, x => x.Name);
				typedMultiBinding.Sources.Add(new Binding() { SourceObject = sourceObject, SourcePath = "Line1" });
				typedMultiBinding.Converter = new NameAndAddressMultiValueConverter();
				return typedMultiBinding;
			};
		}
Beispiel #9
0
        public static IEnumerable <Func <IPerson, IAddress, BindingBase> > GetBindingFactories()
        {
            yield return(delegate(IPerson targetObject, IAddress sourceObject)
            {
                //the second-level binding is bound to Line1, Line2, and Line3 of the Address object, all of which are separated by commas
                var secondLevelBinding = new MultiBinding();
                secondLevelBinding.Sources.Add(new Binding()
                {
                    SourceObject = sourceObject, SourcePath = "Line1"
                });
                secondLevelBinding.Sources.Add(new Binding()
                {
                    SourceObject = sourceObject, SourcePath = "Line2"
                });
                secondLevelBinding.Sources.Add(new Binding()
                {
                    SourceObject = sourceObject, SourcePath = "Line3"
                });
                secondLevelBinding.Converter = new SeparatorConverter(",");

                //Person.Details is bound to their Name, Age, Gender, and the full address as determined by the second level binding, all
                //of which are separated by tildes
                var firstLevelBinding = new MultiBinding(targetObject, "Details");
                firstLevelBinding.Sources.Add(new Binding()
                {
                    SourceObject = targetObject, SourcePath = "Name"
                });
                firstLevelBinding.Sources.Add(new Binding()
                {
                    SourceObject = targetObject, SourcePath = "Age"
                });
                firstLevelBinding.Sources.Add(new Binding()
                {
                    SourceObject = targetObject, SourcePath = "Gender", Converter = new GenderConverter()
                });
                firstLevelBinding.Sources.Add(secondLevelBinding);
                firstLevelBinding.Converter = new SeparatorConverter("~");

                return firstLevelBinding;
            });

            yield return(delegate(IPerson targetObject, IAddress sourceObject)
            {
                //the second-level binding is bound to Line1, Line2, and Line3 of the Address object, all of which are separated by commas
                var secondLevelBinding = new TypedMultiBinding <object>();
                secondLevelBinding.Sources.Add(new TypedBinding <object, IAddress>()
                {
                    SourceObject = sourceObject, SourceExpression = x => x.Line1
                });
                secondLevelBinding.Sources.Add(new TypedBinding <object, IAddress>()
                {
                    SourceObject = sourceObject, SourceExpression = x => x.Line2
                });
                secondLevelBinding.Sources.Add(new TypedBinding <object, IAddress>()
                {
                    SourceObject = sourceObject, SourceExpression = x => x.Line3
                });
                secondLevelBinding.Converter = new SeparatorConverter(",");

                //Person.Details is bound to their Name, Age, Gender, and the full address as determined by the second level binding, all
                //of which are separated by tildes
                var firstLevelBinding = new TypedMultiBinding <IPerson>(targetObject, x => x.Details);
                firstLevelBinding.Sources.Add(new TypedBinding <object, IPerson>()
                {
                    SourceObject = targetObject, SourceExpression = x => x.Name
                });
                firstLevelBinding.Sources.Add(new TypedBinding <object, IPerson>()
                {
                    SourceObject = targetObject, SourceExpression = x => x.Age
                });
                firstLevelBinding.Sources.Add(new TypedBinding <object, IPerson>()
                {
                    SourceObject = targetObject, SourceExpression = x => x.Gender, Converter = new GenderConverter()
                });
                firstLevelBinding.Sources.Add(secondLevelBinding);
                firstLevelBinding.Converter = new SeparatorConverter("~");

                return firstLevelBinding;
            });
        }
Beispiel #10
0
        private static void AddSimpleTypedMultiBinding(Customer customer, OutputSink outputSink, BindingManager bindingManager)
        {
            #region Simple TypedMultiBinding

            var binding = new TypedMultiBinding<OutputSink>(outputSink, o => o.Output);
            binding.Sources.Add(new TypedBinding<object, Customer>(null, null, customer, c => c.Name));
            binding.Sources.Add(new TypedBinding<object, Customer>(null, null, customer, c => c.Gender));
            binding.Sources.Add(new TypedBinding<object, Customer>(null, null, customer, c => c.BirthDate));
            binding.Sources.Add(new TypedBinding<object, Customer>(null, null, customer, c => c.Address.Line1));
            binding.Sources.Add(new TypedBinding<object, Customer>(null, null, customer, c => c.Address.Line2));
            binding.Sources.Add(new TypedBinding<object, Customer>(null, null, customer, c => c.Address.Line3));
            binding.Sources.Add(new TypedBinding<object, Customer>(null, null, customer, c => c.Address.Line4));
            binding.Sources.Add(new TypedBinding<object, Customer>(null, null, customer, c => c.Address.PostCode));
            binding.Mode = BindingMode.OneWayToTarget;
            binding.Converter = new OutputConverter();

            bindingManager.Bindings.Add(binding);

            #endregion
        }