protected static void CodeSourcePropertyChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
 {
     if (d.GetType() == typeof(CloseableTabItem))
     {
         try
         {
             CloseableTabItem cti = ((CloseableTabItem)d);
             cti.InternTextEdit.Text = (string)e.NewValue;
         }
         catch
         {
         }
     }
 }
        public void TabItems_Remove(CloseableTabItem cti)
        {
            int pos = _TabItems.IndexOf(cti);

            if (SelectedTabItem != cti)
            {

            }

            this._TabItems.Remove(cti);
            List<CloseableTabItem> old = _TabItems;
            this.TabItems = new List<CloseableTabItem>(_TabItems);
            old.Clear();
            old = null;
            if (pos >= _TabItems.Count)
            {
                pos = _TabItems.Count - 1;
                if (pos >= 0)
                    SelectedTabItem = _TabItems[_TabItems.Count - 1];
                else
                    SelectedTabItem = null;
            }
            else
            {
                SelectedTabItem = _TabItems[pos];
            }

            if (this.TabItems.Count == 0)
            {
                TabItems_Add(new CloseableTabItem("new"));
            }

            /*if (SelectedTabItem == cti)
            {
                //Das Aktuelle wird geschlossne
            }
            else
            {
                //Ein anderes wird geschlossen
            }*/
        }
        public void TabItems_Add(CloseableTabItem cti)
        {
            cti.CloseTab += cti_CloseTab;

            this._TabItems.Add(cti);
            List<CloseableTabItem> old = _TabItems;

            this.TabItems = new List<CloseableTabItem>(_TabItems);
            this.SelectedTabItem = cti;

            old.Clear();
            old = null;
        }