public SourceClass() {
     SourceItems = new ObservableList(new List<String>());
     // Rebind collection after first change
     // This first change should not affect target list
     SourceItems.ListChanged += (sender, args) => {
         SourceItems = new ObservableList(new List<String>());
         raisePropertyChanged("SourceItems");
     };
 }
 public UIElementCollection(Control parent) {
     this.parent = parent;
     ObservableList<Control> observableList = new ObservableList<Control>(new List<Control>());
     this.list = observableList;
     observableList.ListChanged += onListChanged;
 }
 public SourceClass( ) {
     SourceItems = new ObservableList<String>( new List<String>() );
 }