}         // IsSelected

        // ----------------------------------------------------------------------
        protected override void RemoveItem(int index)
        {
            CheckableItem <T> item = this[index];

            if (item != null)
            {
                item.IsSelectedChanged -= IsItemSelectedChanged;
            }
            base.RemoveItem(index);
        }         // IsSelected
        }         // OnIsSelectedChanged

        // ----------------------------------------------------------------------
        private static void IsSelectedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            CheckableItem <T> checkableItem = d as CheckableItem <T>;

            if (checkableItem == null)
            {
                return;
            }

            checkableItem.OnIsSelectedChanged();
        } // IsSelectedPropertyChanged
        }         // IsSelected

        // ----------------------------------------------------------------------
        protected override void InsertItem(int index, CheckableItem <T> item)
        {
            base.InsertItem(index, item);
            item.IsSelectedChanged += IsItemSelectedChanged;
        }         // IsSelected