static void Layout_ElementRemoved(object sender, LayoutElementEventArgs e)
        {
            LayoutDocument layoutDoc   = e.Element as LayoutDocument;
            var            floating    = e.Element as LayoutDocumentFloatingWindow;
            var            layoutPanel = e.Element as LayoutDocumentPane;

            if (layoutDoc != null)
            {
                var frame = layoutDoc.Content as Frame;
                if (layoutDoc.ContentId == "CodeRemoval")
                {
                    if (TaskbarManager.Instance.TabbedThumbnail.IsThumbnailPreviewAdded(frame))
                    {
                        ThumbnailButtonsHelper.RemoveButtons(TaskbarManager.Instance.TabbedThumbnail.GetThumbnailPreview(frame));
                    }
                    //Tab closed from preview -> clean frame handlers
                    frame.ContentRendered -= frame_ContentRendered;
                    CloseTab(frame);
                    return;
                }
                if (frame != null)
                {
                    RemovePreview(frame);
                }
            }
            else if (floating != null)
            {
                return;
            }
            else if (layoutPanel != null)
            {
                return;
            }
        }
        private static void CreateContentPreview(UIElement content)
        {
            if (!_initialized)
            {
                throw new Exception("Not initialized");
            }

            //if (_previewOffset.X == 0.0 && _previewOffset.Y == 0.0) //probably not calculated yet
            //    _previewOffset = SetThumbnailOffset((Frame) content);
            var             offset    = SetThumbnailOffset((Frame)content);
            TabbedThumbnail thumbnail = new TabbedThumbnail(ParentWindow, content, offset);

            if (!TaskbarManager.Instance.TabbedThumbnail.IsThumbnailPreviewAdded(thumbnail)) //only once
            {
                thumbnail.TabbedThumbnailActivated += new EventHandler <TabbedThumbnailEventArgs>(thumbnail_TabbedThumbnailActivated);
                thumbnail.TabbedThumbnailClosed    += new EventHandler <TabbedThumbnailClosedEventArgs>(thumbnail_TabbedThumbnailClosed);
                thumbnail.TabbedThumbnailMaximized += new EventHandler <TabbedThumbnailEventArgs>(thumbnail_TabbedThumbnailMaximized);
                thumbnail.TabbedThumbnailMinimized += new EventHandler <TabbedThumbnailEventArgs>(thumbnail_TabbedThumbnailMinimized);
                thumbnail.DisplayFrameAroundBitmap  = false;
                thumbnail.ClippingRectangle         = new Rectangle(100, 100, 100, 100);
                //NOTE: ADDING TOOLBAR BUTTON, DOES NOT WORK WHILE DEBUGGING. USUALLY.
                TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(thumbnail);
                ThumbnailButtonsHelper.AddTaskbarButtons(content);
                ThumbnailButtonsHelper.UpdateButtonStatus((Frame)content);
                //Called when using history (it fires even when tab is not active, frame_contentRendered doesn't)
                ((Frame)content).LoadCompleted += (sender, args) =>
                {
                    var frame = sender as Frame;
                    RefreshPreview(frame);
                    ReorderAllPreviews();
                    ThumbnailButtonsHelper.UpdateButtonStatus(frame);
                };
            }
        }
 private static void RemovePreview(UIElement content)
 {
     if (content != null)
     {
         if (TaskbarManager.Instance.TabbedThumbnail.IsThumbnailPreviewAdded(content))
         {
             //Clean it
             var preview = TaskbarManager.Instance.TabbedThumbnail.GetThumbnailPreview(content);
             ((Frame)content).ContentRendered -= frame_ContentRendered;
             ThumbnailButtonsHelper.RemoveButtons(preview);
             TaskbarManager.Instance.TabbedThumbnail.RemoveThumbnailPreview(preview);
             preview.TabbedThumbnailActivated -= thumbnail_TabbedThumbnailActivated;
             preview.TabbedThumbnailClosed    -= thumbnail_TabbedThumbnailClosed;
             preview.TabbedThumbnailMaximized -= thumbnail_TabbedThumbnailMaximized;
             preview.TabbedThumbnailMinimized -= thumbnail_TabbedThumbnailMinimized;
             preview.Dispose();
             preview = null;
         }
     }
 }