Support several registered WpfElement types per FrameworkElement type. Include instance id in control identifier. FindFirstTabItem() method that behaves like FindFirstChild(). Test of virtualizing tabs.
Rename ReferenceId to InstanceId.
Let TabItem.Click() wait until it is selected.
Explicitly specify what types to register with a IRegisteredElement interface.
Rename WpfElement to WpfFrameworkElementBase.
Base classes for all elements so that they can be inherited and concrete classes for the registered types.
Let ElementFactory work with object as registered type, not FrameworkElement.
Base class for ItemsControls.
User ItemsControlItemWrapper for ComboBox.
Remove ChangeSelectedItemTo() method since it can't use WpfComboBoxItemBase.
Abstract base class SourceSearchElement turned into interface.
Converted Children into extension method that uses NativeChildren.
Added NativeParents to ISearchSource and converted Parents into extension method.
Rename SearchConditions to FoundBys. A few documenting comments.
Added WpfContentControlBase to support By.Content().
Simplified FindItem code for ItemsControls by not using extension methods.
Replaced usage of TabItems() extension method with AllItems on WpfContentControlBase.
Replaced usage of TabControl SelectedItem() with TabItem IsSelected. Simpler code and no test code will probably ever need (or require) SelectedItem().
Always bring all elements into view before clicking. Disabled animations on ComboBoxes as they take forever.
A bit too tight timespan waiting for comboboxes to open.