protected virtual void OnCollectionChanged(RadListBoxItemIndexCollectionChangedEventArgs e)
 {
     if (CollectionChanged != null)
     {
         CollectionChanged(this, e);
     }
 }
        protected override void OnClearComplete()
        {
            base.OnClearComplete();
            RadListBoxItemIndexCollectionChangedEventArgs args = new RadListBoxItemIndexCollectionChangedEventArgs(-1, -1, ItemsChangeOperation.Cleared);

            this.OnCollectionChanged(args);
        }
        protected override void OnRemoveComplete(int index, object value)
        {
            //((int)value).Selected = false;
            base.OnRemoveComplete(index, value);
            RadListBoxItemIndexCollectionChangedEventArgs args = new RadListBoxItemIndexCollectionChangedEventArgs((int)value, -1, ItemsChangeOperation.Removed);

            this.OnCollectionChanged(args);
        }
        protected override void OnInsertComplete(int index, object value)
        {
            //((int)value).Selected = true;
            base.OnInsertComplete(index, value);
            RadListBoxItemIndexCollectionChangedEventArgs args = new RadListBoxItemIndexCollectionChangedEventArgs(-1, (int)value, ItemsChangeOperation.Inserted);

            this.OnCollectionChanged(args);
        }
        protected override void OnSetComplete(int index, object oldValue, object newValue)
        {
            //((int)oldValue).Selected = false;
            //((int)newValue).Selected = true;
            base.OnSetComplete(index, oldValue, newValue);
            RadListBoxItemIndexCollectionChangedEventArgs args = new RadListBoxItemIndexCollectionChangedEventArgs((int)oldValue, (int)newValue, ItemsChangeOperation.Set);

            this.OnCollectionChanged(args);
        }