void OnContentChanged() { if (_contentPresenter == null) { throw new InvalidOperationException("'ContentPresenter' element not found."); } _isContentChanging = true; var content = Content; if (content == null) { _isContentChanging = false; _contentPresenter.InnerHTML = null; return; } var frameworkElement = content as FrameworkElement; if (frameworkElement != null) { if (_contentPresenter.LogicalChilderenCount == 1) { _contentPresenter.RemoveLogicalChild(_contentPresenter.GetLogicalChildAt(0)); } if (_contentPresenter.VisualChilderenCount == 1) { _contentPresenter.RemoveVisualChild(_contentPresenter.GetVisualChildAt(0)); } _contentPresenter.AddLogicalChild(frameworkElement); if (LogicalChilderenCount == 1) { RemoveLogicalChild(GetLogicalChildAt(0)); } AddLogicalChild(frameworkElement); _isContentChanging = false; return; } var contentAsString = content.ToString(); var textBlock = UIBuilder.Create <TextBlock>(); textBlock.Text = contentAsString; _contentPresenter.AddLogicalChild(textBlock); if (LogicalChilderenCount == 1) { RemoveLogicalChild(GetLogicalChildAt(0)); } AddLogicalChild(textBlock); _isContentChanging = false; }