public IWeakEvent this[string PropertyName] { get { WeakEvent evt; if (_propertyEvents.TryGetValue(PropertyName, out evt)) { return(evt); } evt = new WeakEvent(_owner); _propertyEvents.Add(PropertyName, evt); return(evt); } }
public void test_FilterCollection() { WeakObservableCollection<FilterItem> items = new WeakObservableCollection<FilterItem>() { new FilterItem() {Property = false}}; var manualTrigger = new WeakEvent(items); var filtered = items.ToAutoProcessed().FilteredBy(x => x.Property) .UpdateOn(x => x.PropertyTrigger) .UpdateOn(x => null); var filteredM = items.ToAutoProcessed().FilteredBy(x => x.Property).UpdateOn(manualTrigger); Assert.AreEqual(0, filtered.Count); items[0].Property = true; Assert.AreEqual(1, filtered.Count); Assert.AreEqual(0, filteredM.Count); manualTrigger.Raise(); Assert.AreEqual(filtered.Count, filteredM.Count); items[0].Property = false; Assert.AreEqual(0, filtered.Count); items.Add(new FilterItem() { Property = true }); Assert.AreEqual(1, filtered.Count); items.Add(new FilterItem() { Property = false }); Assert.AreEqual(1, filtered.Count); items.Add(new FilterItem() { Property = true }); Assert.AreEqual(2, filtered.Count); items.Remove(items.First(x => x.Property)); Assert.AreEqual(1, filtered.Count); Assert.AreSame(items.Single(x => x.Property), filtered[0]); items.Remove(items.First(x => !x.Property)); Assert.AreEqual(1, filtered.Count); items.Clear(); Assert.AreEqual(0, filtered.Count); //тестируем работу сортировки var rawColl = new WeakObservableCollection<string>(); //сортируем по первым символам var sorted = rawColl.ToAutoProcessed().SortedOn((x, y) => x.Substring(0, 1).CompareTo(y.Substring(0, 1))); rawColl.Add("5ф"); rawColl.Add("2ф"); rawColl.Add("4ф"); rawColl.Add("3ф"); rawColl.Add("1с"); rawColl.Add("5с"); rawColl.Add("2с"); rawColl.Add("4с"); rawColl.Add("3с"); rawColl.Add("1с"); for (int i = 0; i < 5; i++) { Assert.AreEqual((i + 1).ToString(), sorted[2 * i].Substring(0, 1)); Assert.AreEqual((i + 1).ToString(), sorted[2 * i + 1].Substring(0, 1)); } }
public IWeakEvent this[string PropertyName] { get { WeakEvent evt; if (_propertyEvents.TryGetValue(PropertyName, out evt)) return evt; evt = new WeakEvent(_owner); _propertyEvents.Add(PropertyName, evt); return evt; } }
private CompoundWeakEvent() { _evt = new WeakEvent(this); trigger = new EventReceiver((x, y) => _evt.Raise(y)); }