private void bidChanged(TECChangedEventArgs obj) { if (!(obj.Sender is TECCatalogs || obj.Sender is TECScopeTemplates) && obj.Change == Change.Add) { if (obj.Value is TECHardware hardware) { if (hardware.RequireQuote && hardware.QuotedPrice == -1) { NeedQuoteHardware.Add(hardware); } } else if (obj.Value is IRelatable child) { if (child is TECSubScope subScope) { NeedQuoteHardware.AddRange(subScope.Devices .Where(x => x is TECHardware ware && ware.RequireQuote && ware.QuotedPrice == -1 && !NeedQuoteHardware.Contains(ware)) .Distinct() .OfType <TECHardware>()); } else { NeedQuoteHardware.AddRange(child .GetAll <TECSubScope>() .SelectMany(ss => ss.Devices .Where(x => x is TECHardware ware && ware.RequireQuote && ware.QuotedPrice == -1 && !NeedQuoteHardware.Contains(ware))) .Distinct() .OfType <TECHardware>()); } } } }
private void quotedHardware_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) { foreach (TECHardware item in e.NewItems) { NeedQuoteHardware.Remove(item); } } else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove) { foreach (TECHardware item in e.OldItems) { if (item.RequireQuote) { NeedQuoteHardware.Add(item); } } } }