protected override void RemoveItem(int index)
        {
            DetailConfiguration detailConfig = this[index];

            detailConfig.DetachFromContainingCollection();

            DetailVisibilityChangedEventManager.RemoveListener(detailConfig, this);

            base.RemoveItem(index);
        }
        protected override void ClearItems()
        {
            foreach (DetailConfiguration detailConfig in this)
            {
                detailConfig.DetachFromContainingCollection();

                DetailVisibilityChangedEventManager.RemoveListener(detailConfig, this);
            }

            base.ClearItems();
        }
        protected override void InsertItem(int index, DetailConfiguration item)
        {
            if (item != null)
            {
                item.AttachToContainingCollection(this);

                DetailVisibilityChangedEventManager.AddListener(item, this);
            }

            base.InsertItem(index, item);
        }