Właściwie to chodzi o referencje kontrolki, która na stałe zalega w pamięci.

Mam ciężką kontrolkę telerikową RadRichTextBox, która ładuje się kilka sekund. Tworzę ją przy uruchomieniu programu w osobnym wątku i przechowuję w pamięci. Następnie przy otwarciu popupa dodaję jej referencję do Grida, a przy zamknięciu tego popupa usuwam ją z tego Grida. Mniej więcej tak:

if (gridG.Children.Contains(textEditControl))
   gridG.Children.Remove(textEditControl);

if (!gridG.Children.Contains(textEditControl))
   gridG.Children.Add(textEditControl);

Na popupie jest expander, w którym na dwóch kartach jest podpinana. Znaczy Przy przełączeniu z jednego expandera na drugi w pierwszym jest odpinana, a w drugim podpinana, i na odwrót.

Gdy pierwszy raz otworzy się tego popupa to wszystko działa. Gdy jednak zamknie się tego popupa i otworzy go po raz drugi to przy każdym "przepinaniu" kontrolki rzucany jest wyjątek wewnętrzny telerika. Wstawienie fragmentu kodu w try/catch nie działa, bo wyjątek prawdopodobnie rzucany i obsługiwany jest wewnątrz biblioteki.

Dodam, że program kontynuuje działanie a kontrolka działa poprawnie. Pojawia się tylko błąd, który psuje dobre wrażenie.

Oto komunikat:

at Telerik.Windows.Documents.Layout.LayoutElement.SetParent(LayoutElement newParent)
   at Telerik.Windows.Documents.Layout.LayoutBox.get_Parent()
   at Telerik.Windows.Documents.DocumentPosition.GetCurrentTableCellBox()
   at Telerik.Windows.Documents.DocumentPosition.GetCurrentTableRowBox()
   at Telerik.Windows.Documents.DocumentPosition.GetCurrentTableBox()
   at Telerik.Windows.Controls.RichTextBoxUI.TableStylesGallery.TrySetSelectedTableStyle()
   at Telerik.Windows.Controls.RichTextBoxUI.TableStylesGallery.CaretPosition_PositionChanged(Object sender, EventArgs e)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at Telerik.Windows.Documents.DocumentPosition.OnPositionChanged()
   at Telerik.Windows.Documents.Utils.SuspendChangingAndChangedActionCounter.InvokeChangedActionInternal()
   at Telerik.Windows.Documents.Utils.SuspendChangingAndChangedActionCounter.InvokeChanged()
   at Telerik.Windows.Documents.DocumentPosition.CallOnPositionChanged(Boolean changesCursorInitialLocation)
   at Telerik.Windows.Documents.DocumentPosition.Reset()
   at Telerik.Windows.Documents.Model.RadDocument.Measure(SizeF measureSize)
   at Telerik.Windows.Documents.UI.DocumentWebLayoutPresenter.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.UIElement.UpdateLayout()
   at Telerik.Windows.Documents.UI.DocumentPresenterBase.Telerik.Windows.Controls.IDocumentEditorPresenter.UpdateLayout()
   at Telerik.Windows.Controls.RadRichTextBox.<>c__DisplayClass1e.<UpdateEditorLayout>b__1d()
   at Telerik.Windows.Controls.RadRichTextBox.UpdateEditorLayout(Boolean focusCarret, Boolean updateCaretSize, Boolean async)
   at Telerik.Windows.Controls.RadRichTextBox.UpdateEditorLayout(Boolean async)
   at Telerik.Windows.Controls.RadRichTextBox.UpdateEditorLayout()
   at Telerik.Windows.Controls.RichTextBoxUI.Dialogs.Styles.ObservableStyleCollection..ctor(RadDocument document, RadRichTextBox snapshotRichtextBox, Int32 snapshotWidth, Int32 snapshotHeight, Boolean addClearAllStyle, Boolean onlyPrimary)
   at Telerik.Windows.Controls.RichTextBoxUI.StylesGallery.SetInitialQuickStyleItemSource(RadRichTextBox radRichTextBox)
   at Telerik.Windows.Controls.RichTextBoxUI.StylesGallery.<>c__DisplayClass1.<SetQuickStyleItemSource>b__0()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

Wie ktoś może jak taki błąd rozwiązać? Zapytałem na stackoverflow, ale tam by otrzymać odpowiedź to trzeba mieć szczęście zwycięzcy lotto.