/// <summary>
        /// Attached to RTB-control's LinkClicked event to convert link text to logEvent
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TargetRichTextBox_LinkClicked(object sender, RoutedEventArgs e)
        {
            e.Handled = true;
            var linktext = (e.OriginalSource as Hyperlink).NavigateUri.ToString();


            DelLinkClicked linkClickEvent = LinkClicked;

            if (linkClickEvent != null)
            {
                string linkText = linktext;//.Substring(0, match.Index);
                linkClickEvent(this, linkText, null);
            }


            //Match match = Regex.Match(linktext, "#" + LinkPrefix + @"(\d+)");
            //if (!match.Success)
            //{
            //    //could be a link inserted by another RTB control user
            //    InternalLogger.Warn("Unexpected link format '{0}', skipping", linktext);
            //    return;
            //}

            //int id;
            //if (!int.TryParse(match.Groups[1].Value, out id))
            //{
            //    //still could be a link inserted by another RTB control user
            //    InternalLogger.Warn("Unexpected link format '{0}', skipping", linktext);
            //    return;
            //}

            //LogEventInfo logEvent;
            //lock (linkedEventsLock)
            //{
            //    linkedEvents.TryGetValue(id, out logEvent);
            //}
            //if (logEvent == null)
            //{
            //    HandleError("Missing link id {0}", id);
            //    return;
            //}

            //DelLinkClicked linkClickEvent = LinkClicked;
            //if (linkClickEvent != null)
            //{
            //    string linkText = linktext.Substring(0, match.Index);
            //    linkClickEvent(this, linkText, logEvent);
            //}
        }
        /// <summary>
        /// Attached to RTB-control's LinkClicked event to convert link text to logEvent
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TargetRichTextBox_LinkClicked(object sender, LinkClickedEventArgs e)
        {
            Match match = Regex.Match(e.LinkText, "#" + LinkPrefix + @"(\d+)");

            if (!match.Success)
            {
                //could be a link inserted by another RTB control user
                InternalLogger.Warn("Unexpected link format '{0}', skipping", e.LinkText);
                return;
            }

            int id;

            if (!int.TryParse(match.Groups[1].Value, out id))
            {
                //still could be a link inserted by another RTB control user
                InternalLogger.Warn("Unexpected link format '{0}', skipping", e.LinkText);
                return;
            }

            LogEventInfo logEvent;

            lock (linkedEventsLock)
            {
                linkedEvents.TryGetValue(id, out logEvent);
            }
            if (logEvent == null)
            {
                HandleError("Missing link id {0}", id);
                return;
            }

            DelLinkClicked linkClickEvent = LinkClicked;

            if (linkClickEvent != null)
            {
                string linkText = e.LinkText.Substring(0, match.Index);
                linkClickEvent(this, linkText, logEvent);
            }
        }