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); }
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); }
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)); }