/// <summary> /// Append given string to the textblock /// The given string is converted into a recognized inline element /// i.e. hyperlink, user link, etc... /// The event handlers provided will be used /// </summary> /// <param name="textblock"></param> /// <param name="word"></param> /// <param name="urlClickedHandler"></param> /// <param name="userClickedHandler"></param> public static void AppendTo( TextBlock textblock, string word, TwitterEventHandler urlClickedHandler, TwitterEventHandler userClickedHandler, MouseEventHandler linkMouseEnterHandler, MouseEventHandler linkMouseLeaveHandler) { // input argument check if (string.IsNullOrEmpty(word)) { return; } Inline element = ConvertToInline(word, urlClickedHandler, userClickedHandler, linkMouseEnterHandler, linkMouseLeaveHandler); if (null != element) { textblock.Inlines.Add(element); } }
/// <summary> /// Converts a string into an inline element /// The provided event handlers will be used when element is clicked /// </summary> /// <param name="word"></param> /// <param name="urlClickedHandler"></param> /// <param name="userClickedHandler"></param> /// <returns></returns> public static Inline ConvertToInline( string word, TwitterEventHandler urlClickedHandler, TwitterEventHandler userClickedHandler, MouseEventHandler linkMouseEnterHandler, MouseEventHandler linkMouseLeaveHandler) { Hyperlink link; // input arg check if (string.IsNullOrEmpty(word)) { return null; } // convert string to user link if (word.IndexOf(Constants.REPLY_PREFIX) == 0) { link = new Hyperlink(); link.Inlines.Add(word); link.Foreground = Brushes.LightBlue; link.Click += new RoutedEventHandler(userClickedHandler); return link; } // convert string to url if (TryParseUrl(word, out link)) { link.Foreground = Brushes.LightBlue; link.Click += new RoutedEventHandler(urlClickedHandler); // hover url opens a preview browser link.MouseEnter += new MouseEventHandler(linkMouseEnterHandler); link.MouseLeave += new MouseEventHandler(linkMouseLeaveHandler); return link; } // return plain text return new Run(word); }
/// <summary> /// Converts a string into an inline element /// The provided event handlers will be used when element is clicked /// </summary> /// <param name="word"></param> /// <param name="urlClickedHandler"></param> /// <param name="userClickedHandler"></param> /// <returns></returns> public static Inline ConvertToInline( string word, TwitterEventHandler urlClickedHandler, TwitterEventHandler userClickedHandler, MouseEventHandler linkMouseEnterHandler, MouseEventHandler linkMouseLeaveHandler) { Hyperlink link; // input arg check if (string.IsNullOrEmpty(word)) { return(null); } // convert string to user link if (word.IndexOf(Constants.REPLY_PREFIX) == 0) { link = new Hyperlink(); link.Inlines.Add(word); link.Foreground = Brushes.LightBlue; link.Click += new RoutedEventHandler(userClickedHandler); return(link); } // convert string to url if (TryParseUrl(word, out link)) { link.Foreground = Brushes.LightBlue; link.Click += new RoutedEventHandler(urlClickedHandler); // hover url opens a preview browser link.MouseEnter += new MouseEventHandler(linkMouseEnterHandler); link.MouseLeave += new MouseEventHandler(linkMouseLeaveHandler); return(link); } // return plain text return(new Run(word)); }