Esempio n. 1
0
        static public ArrayBindingBuilder <TModel, TView, TModelItem, TNewViewItem> SelectItems <TModel, TView, TModelItem, TOldViewItem, TNewViewItem>(
            this IArrayBindingBuilder <TModel, TView, TModelItem, TOldViewItem> builder,
            Func <TModel, TModelItem, TView, TNewViewItem, TNewViewItem> itemConverter,
            Action <TNewViewItem> viewItemDisposer = null)
        {
            var newBuilder = new ArrayBindingBuilder <TModel, TView, TModelItem, TNewViewItem>(builder);

            IArrayBindingBuilder <TModel, TView, TModelItem, TNewViewItem> interfaceBuilder = newBuilder;

            interfaceBuilder.ReferenceGetter  = builder.ReferenceGetter;
            interfaceBuilder.ItemConverter    = itemConverter;
            interfaceBuilder.ViewItemDisposer = viewItemDisposer;

            return(newBuilder);
        }
Esempio n. 2
0
        static public void To <TModel, TView, TModelItem, TViewItem, TViewArray, TCreatedArray>(
            this IArrayBindingBuilder <TModel, TView, TModelItem, TViewItem> binding,
            Expression <Func <TView, TViewArray> > arrayGetterExpression,
            Action <TModel, TView, TViewArray, int[]> arrayResizer  = null,
            Func <TModel, TView, int[], TCreatedArray> arrayCreator = null)
            where TViewArray : IWriteableArray <TViewItem>
            where TCreatedArray : TViewArray
        {
            Func <TView, TViewArray> arrayGetter = arrayGetterExpression.Compile();

            var arrayMemberExpression = (MemberExpression)arrayGetterExpression.Body;
            ParameterExpression        setterValueParameter = Expression.Parameter(typeof(TViewArray));
            Expression                 setterBodyExpression = Expression.Assign(arrayMemberExpression, setterValueParameter);
            Action <TView, TViewArray> arraySetter          = Expression.Lambda <Action <TView, TViewArray> >(setterBodyExpression, arrayGetterExpression.Parameters[0], setterValueParameter).Compile();

            binding.To(arrayGetter, arraySetter, arrayResizer, arrayCreator);
        }
Esempio n. 3
0
 public ArrayBindingBuilder(IArrayBindingBuilder <TModel, TView> builder)
 {
     _bindingCollection     = builder.BindingCollection;
     _referencePropertyName = builder.ReferencePropertyName;
     _subscriptionGetter    = builder.SubscriptionGetter;
 }