When the ItemsSource property is set, the Items collection is made read-only and fixed-size.
When ItemsSource is in use, setting the property to null removes the collection and restores usage to Items, which will be an empty ItemCollection. When ItemsSource is not in use, the value of this property is null, and setting it to null has no effect.
In most cases you do not need to implement your own collections. Instead, consider using ObservableCollection<'T> or other existing collections. For more information, see the "Collection Objects Used as Binding Source" in Binding Sources Overview.