Beispiel #1
0
        public static IDisposable SetDisposableBinding(this DependencyObject target, DependencyProperty dependencyProperty, Binding binding,
                                                       bool restoreValue = false)
        {
            var localValue = target.ReadLocalValue(dependencyProperty);
            var weakRef    = new WeakReference(target);

            BindingOperations.SetBinding(target, dependencyProperty, binding);

            return(DelegateDisposable.Create(delegate
            {
                var reference = weakRef.GetTarget <DependencyObject>();

                if (reference == null)
                {
                    return;
                }

                if (reference.ReadLocalBinding(dependencyProperty) != binding)
                {
                    return;
                }

                if (restoreValue == false)
                {
                    reference.ClearValue(dependencyProperty);
                }
                else
                {
                    reference.RestoreLocalValue(dependencyProperty, localValue);
                }
            }));
        }
Beispiel #2
0
 public NotifyCollectionEventDispatcher(INotifyCollectionChanged notifier, Action <T> onItemAdded, Action <T> onItemRemoved, Action onReset)
     : base(onItemAdded, onItemRemoved, onReset)
 {
     _disposer = DelegateDisposable.Create(() => notifier.CollectionChanged += OnCollectionChangedHandler, () => notifier.CollectionChanged -= OnCollectionChangedHandler);
 }
Beispiel #3
0
 public static IDisposable Suspend(BoolSuspender suspender)
 {
     return(DelegateDisposable.Create(suspender.Suspend, suspender.Resume));
 }