/// <summary>
 /// Updates the items, calling <see cref="CreateDescriptor(T)"/>
 /// for each <see cref="IsValid"/> item in <paramref name="sourceItems"/>.
 /// </summary>
 protected virtual void UpdateProperties(IEnumerable <T> sourceItems, ICollection <IPropertyItemDescriptor <T> > targetList)
 {
     eventfilter.Cancel();
     targetList.Clear();
     foreach (T o in sourceItems)
     {
         if (IsValid(o))
         {
             targetList.Add(CreateDescriptor(o));
         }
     }
 }