/// <summary>
        /// Shows the <see cref="TextBox"/>.
        /// </summary>
        private void ShowTextBox()
        {
            _cancelEditing = false;

            _textBoxAdorner           = new TextBoxAdorner(_textBlock);
            _textBoxAdorner.MaxWidth  = MaxWidth;
            _textBoxAdorner.MaxHeight = MaxHeight;

            _textBoxAdorner.TextBox.Text = Text;
            _textBoxAdorner.TextBox.SelectAll();

            // Bind style of text box to TextBoxStyle
            Binding binding = new Binding("TextBoxStyle")
            {
                Source = this
            };

            _textBoxAdorner.TextBox.SetBinding(StyleProperty, binding);

            _textBoxAdorner.TextBox.KeyDown           += OnTextBoxKeyDown;
            _textBoxAdorner.TextBox.LostKeyboardFocus += OnTextBoxLostKeyboardFocus;

            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(_textBlock);

            adornerLayer.Add(_textBoxAdorner);
        }
        /// <summary>
        /// Removes the <see cref="TextBox"/>.
        /// </summary>
        private void RemoveTextBox()
        {
            if (_textBoxAdorner != null)
            {
                if (!_cancelEditing)
                {
                    // Accept input
                    Text = _textBoxAdorner.TextBox.Text;
                }

                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(_textBlock);
                adornerLayer.Remove(_textBoxAdorner);
                _textBoxAdorner = null;
            }
        }
        /// <summary>
        /// Shows the <see cref="TextBox"/>.
        /// </summary>
        private void ShowTextBox()
        {
            _cancelEditing = false;

            _textBoxAdorner = new TextBoxAdorner(_textBlock);
            _textBoxAdorner.MaxWidth = MaxWidth;
            _textBoxAdorner.MaxHeight = MaxHeight;

            _textBoxAdorner.TextBox.Text = Text;
            _textBoxAdorner.TextBox.SelectAll();

            // Bind style of text box to TextBoxStyle
            Binding binding = new Binding("TextBoxStyle") { Source = this };
            _textBoxAdorner.TextBox.SetBinding(StyleProperty, binding);

            _textBoxAdorner.TextBox.KeyDown += OnTextBoxKeyDown;
            _textBoxAdorner.TextBox.LostKeyboardFocus += OnTextBoxLostKeyboardFocus;

            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(_textBlock);
            adornerLayer.Add(_textBoxAdorner);
        }
        /// <summary>
        /// Removes the <see cref="TextBox"/>.
        /// </summary>
        private void RemoveTextBox()
        {
            if (_textBoxAdorner != null)
            {
                if (!_cancelEditing)
                {
                    // Accept input
                    Text = _textBoxAdorner.TextBox.Text;
                }

                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(_textBlock);
                adornerLayer.Remove(_textBoxAdorner);
                _textBoxAdorner = null;
            }
        }