/// <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); } }
/// <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; }
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);
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);
public void Add(Publisher publisher, Subscriber subscriber) => Proxy = WeakEvent.PropertyChanged.Add(publisher, subscriber.Handler);
public void Add(Publisher publisher, Subscriber subscriber) => Proxy = WeakEvent.CollectionChanged.Add(publisher, subscriber.Handler);
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);