private void RemoveAndAddToRecycleBin(ItemType itemType, ContentPresenter cp) { switch (itemType) { case ItemType.Item: _recycledItems.Push(cp); break; case ItemType.GroupHeader: _recycledGroupHeaders.Push(cp); break; case ItemType.GroupFooter: _recycledGroupFooters.Push(cp); break; case ItemType.ListHeader: Debug.Assert(_recycledListHeader == null); _recycledListHeader = cp; break; case ItemType.ListFooter: Debug.Assert(_recycledListFooter == null); _recycledListFooter = cp; break; } EventHandler<LinkUnlinkEventArgs> handler = Unlink; if (handler != null) { handler(this, new LinkUnlinkEventArgs(cp)); } cp.Content = null; cp.SetExtraData(null, -1); }