public CollectionTwoWayBinding(IEnumerable target, Func <TSource, TTarget> itemConverter, IEnumerable source, Func <TTarget, TSource> itemBackConverter, bool reverse, bool useStrongReferences)
            {
                CollectionLocker sourceLocker = new CollectionLocker();
                CollectionLocker targetLocker = new CollectionLocker();

                targetToSource = new CollectionOneWayBinding <TSource, TTarget>(source, itemBackConverter, target, targetLocker, sourceLocker, reverse, useStrongReferences);
                sourceToTarget = new CollectionOneWayBinding <TTarget, TSource>(target, itemConverter, source, sourceLocker, targetLocker, reverse, useStrongReferences);
            }
Beispiel #2
0
            public CollectionTwoWayBinding(object target, Func <TSource, TTarget> itemConverter, object source, Func <TTarget, TSource> itemBackConverter, bool reverse)
            {
                CollectionLocker sourceLocker = new CollectionLocker();
                CollectionLocker targetLocker = new CollectionLocker();

                targetToSource = new CollectionOneWayBinding <TSource, TTarget>(source, itemBackConverter, target, itemConverter, targetLocker, sourceLocker, reverse);
                sourceToTarget = new CollectionOneWayBinding <TTarget, TSource>(target, itemConverter, source, itemBackConverter, sourceLocker, targetLocker, reverse);
            }
Beispiel #3
0
            public CollectionOneWayBinding(object target, Func <TSource, TTarget> itemConverter, object source, Func <TTarget, TSource> itemBackConverter,
                                           CollectionLocker doNotProcessSourceCollectionChanged,
                                           CollectionLocker doNotProcessTargetCollectionChanged, bool reverse)
            {
                this.reverse = reverse;
                this.doNotProcessSourceCollectionChanged = doNotProcessSourceCollectionChanged;
                this.doNotProcessTargetCollectionChanged = doNotProcessTargetCollectionChanged;
                sourceRef              = new WeakReference(source);
                targetRef              = new WeakReference(target);
                this.itemConverter     = itemConverter;
                this.itemBackConverter = itemBackConverter;
                var sourceNotify = source as INotifyCollectionChanged;

                if (sourceNotify != null)
                {
                    sourceNotify.CollectionChanged += OnSourceCollectionChanged;
                }
            }
            public CollectionOneWayBinding(IEnumerable target, Func <TSource, TTarget> itemConverter, IEnumerable source,
                                           CollectionLocker doNotProcessSourceCollectionChanged,
                                           CollectionLocker doNotProcessTargetCollectionChanged, bool reverse, bool useStrongReferences)
            {
                source                   = GetListObject(source);
                this.reverse             = reverse;
                this.useStrongReferences = useStrongReferences;
                this.doNotProcessSourceCollectionChanged = doNotProcessSourceCollectionChanged;
                this.doNotProcessTargetCollectionChanged = doNotProcessTargetCollectionChanged;
                sourceRef          = useStrongReferences ? (object)source : new WeakReference(source);
                targetRef          = useStrongReferences ? (object)target : new WeakReference(target);
                this.itemConverter = itemConverter;
                var sourceNotify = source as INotifyCollectionChanged;

                if (sourceNotify != null)
                {
                    sourceNotify.CollectionChanged += OnSourceCollectionChanged;
                }
            }
 public void DoLockedActionIfNotLocked(CollectionLocker possibleLocked, Action action)
 {
     possibleLocked.DoIfNotLocked(() => DoLockedAction(action));
 }