Example #1
0
 /// <summary>Initializes a new instance of the <see cref="SynchronizingCollection{T, TOriginal}"/> class.</summary>
 /// <param name="originalCollection">The original collection.</param>
 /// <param name="factory">The factory which is used to create new elements in this collection.</param>
 /// <exception cref="ArgumentNullException">The argument originalCollection must not be null.</exception>
 /// <exception cref="ArgumentNullException">The argument factory must not be null.</exception>
 public SynchronizingCollection(IEnumerable <TOriginal> originalCollection, Func <TOriginal, T> factory)
     : base(originalCollection, factory, true)
 {
     if (originalCollection is INotifyCollectionChanged originalObservableCollection)
     {
         originalCollectionChangedProxy = WeakEvent.CollectionChanged.Add(originalObservableCollection, OriginalCollectionChanged);
     }
 }
Example #2
0
 /// <summary>Initializes a new instance of the ObservableListView class that represents a view of the specified list.</summary>
 /// <param name="originalList">The original list.</param>
 /// <param name="comparer">Optional, a custom comparer used to compare the items.</param>
 /// <param name="filter">Optional, a filter used for this list view.</param>
 /// <param name="sort">Optional, a sorting used for this list view.</param>
 /// <exception cref="ArgumentNullException">The argument originalCollection must not be null.</exception>
 public ObservableListView(IEnumerable <T> originalList, IEqualityComparer <T>?comparer, Predicate <T>?filter,
                           Func <IEnumerable <T>, IOrderedEnumerable <T> >?sort) : base(originalList, comparer, filter, sort, true)
 {
     if (originalList is INotifyCollectionChanged originalObservableCollection)
     {
         originalCollectionChangedProxy = WeakEvent.CollectionChanged.Add(originalObservableCollection, OriginalCollectionChanged);
     }
 }
 public void Initialize()
 {
     emailsView = new ObservableListView <Email>(EmailFolder.Emails, null, EmailListViewModel.Filter, x => x.OrderByDescending(y => y.Sent));
     EmailListViewModel.Emails              = emailsView;
     EmailListViewModel.DeleteEmailCommand  = DeleteEmailCommand;
     emailListViewModelPropertyChangedProxy = WeakEvent.PropertyChanged.Add(EmailListViewModel, EmailListViewModelPropertyChanged);
     emailLayoutViewModel.EmailListView     = EmailListViewModel.View;
     emailLayoutViewModel.EmailView         = EmailViewModel.View;
 }
Example #4
0
        private static (WeakReference <TManager>, WeakReference <TPublisher>, WeakReference <TSubscriber>) WeakEventHandlerCore(TManager?manager, TPublisher?publisher, TSubscriber?subscriber,
                                                                                                                                int raiseCount = 1, int addCount = 1, bool remove = false, bool removeTwice = false)
        {
            manager ??= new TManager();
            publisher ??= new TPublisher();
            subscriber ??= new TSubscriber();
            Assert.AreEqual(0, publisher.EventHandlerCount);
            for (int i = 0; i < addCount; i++)
            {
                manager.Add(publisher, subscriber);
            }
            IWeakEventProxy?proxy1 = null;

            if (removeTwice)
            {
                proxy1 = manager.Proxy;
                manager.Add(publisher, subscriber);
            }
            Assert.AreEqual(removeTwice ? 2 : addCount, publisher.EventHandlerCount);
            proxy1?.Remove();
            proxy1?.Remove();

            GC.Collect();

            Assert.AreEqual(0, subscriber.HandlerCallCount);
            for (int i = 0; i < raiseCount; i++)
            {
                publisher.RaiseEvent();
            }
            Assert.AreEqual(addCount * raiseCount, subscriber.HandlerCallCount);
            if (remove)
            {
                var count = subscriber.HandlerCallCount;
                manager.Proxy !.Remove();
                publisher.RaiseEvent();
                Assert.AreEqual(count, subscriber.HandlerCallCount);
                manager.Proxy.Remove();
                publisher.RaiseEvent();
                Assert.AreEqual(count, subscriber.HandlerCallCount);
            }

            return(new WeakReference <TManager>(manager), new WeakReference <TPublisher>(publisher), new WeakReference <TSubscriber>(subscriber));
        }
 public void Add(Subscriber subscriber) => Proxy = WeakEvent.StaticEventHandler <PropertyChangedEventArgs> .Add(subscriber.Handler, h => StaticPublisher.Event1 += h, h => StaticPublisher.Event1 -= h);
Example #6
0
 public void Add(Publisher publisher, Subscriber subscriber) => Proxy = WeakEvent.EventHandler <PropertyChangedEventArgs> .Add(publisher, subscriber.Handler, (s, h) => s.Event1 += h, (s, h) => s.Event1 -= h);
Example #7
0
 public void Add(Publisher publisher, Subscriber subscriber) => Proxy = WeakEvent.PropertyChanged.Add(publisher, subscriber.Handler);
Example #8
0
 public void Add(Publisher publisher, Subscriber subscriber) => Proxy = WeakEvent.CollectionChanged.Add(publisher, subscriber.Handler);
Example #9
0
 public void Add(Subscriber subscriber) => Proxy = WeakEvent.StaticEventHandler.Add(subscriber.Handler, h => StaticPublisher.Event1 += h, h => StaticPublisher.Event1 -= h);
 public void Add(Publisher publisher, Subscriber subscriber) => Proxy = WeakEvent.EventHandler.Add(publisher, subscriber.Handler, (s, h) => s.Event1 += h, (s, h) => s.Event1 -= h);
 public void Add(Publisher publisher, Subscriber subscriber) => Proxy = WeakEvent.CanExecuteChanged.Add(publisher, subscriber.Handler);