public InteractionBox() { InitializeComponent(); InteractionEntry interaction = this.DataContext as InteractionEntry; if (interaction != null) { if (interaction.apnInteraction.action == "follow") { textblock_text.Visibility = System.Windows.Visibility.Collapsed; } } }
void generateElementsTextblock(Entities inlines) { this.Inlines.Clear(); try { Item item = this.DataContext as Item; InteractionEntry interaction = this.DataContext as InteractionEntry; string text = ""; if (item != null) { text = item.text; if (item.isRepost) { text = item.apnPost.repost_of.text; } } else if (interaction != null) { if (interaction.main_post != null) { text = interaction.main_post.text; } } this.Foreground = System.Windows.Application.Current.Resources["color_text"] as SolidColorBrush; if (inlines.allEntities == null) { this.Inlines.Add(text); } else { if (inlines.allEntities.Count == 0) { this.Inlines.Add(text); } else { int startPosition = 0; foreach (Entities.IEntity entity in inlines.allEntities) { if (typeof(Entities.Link) == entity.GetType()) { Entities.Link innerLink = entity as Entities.Link; this.Inlines.Add(text.Substring(Math.Min(startPosition, text.Length - 1), Math.Max(0, innerLink.pos - startPosition))); startPosition = innerLink.pos + innerLink.len + 1; Hyperlink link = new Hyperlink(); link.TextDecorations = null; link.Foreground = System.Windows.Application.Current.Resources["color_link"] as SolidColorBrush; Uri target; Uri.TryCreate(innerLink.url, UriKind.Absolute, out target); link.NavigateUri = target; link.Inlines.Add(innerLink.text); link.ToolTip = innerLink.url; link.Cursor = Cursors.Hand; link.Click += new RoutedEventHandler(link_Click); ContextMenu contextMenuLink = new ContextMenu(); MenuItem menuItemCopyToClipboard = new MenuItem(); menuItemCopyToClipboard.Header = "Copy link"; menuItemCopyToClipboard.CommandParameter = innerLink.url; menuItemCopyToClipboard.Click += new RoutedEventHandler(menuItemCopyToClipboard_Click); contextMenuLink.Items.Add(menuItemCopyToClipboard); MenuItem menuItemOpenInBrowser = new MenuItem(); menuItemOpenInBrowser.Header = "Open in webbrowser"; menuItemOpenInBrowser.CommandParameter = innerLink.url; menuItemOpenInBrowser.Click += new RoutedEventHandler(menuItemOpenInBrowser_Click); contextMenuLink.Items.Add(menuItemOpenInBrowser); link.ContextMenu = contextMenuLink; this.Inlines.Add(link); this.Inlines.Add(" "); } else if (typeof(Entities.Hashtag) == entity.GetType()) { Entities.Hashtag innerHash = entity as Entities.Hashtag; this.Inlines.Add(text.Substring(Math.Min(startPosition, text.Length - 1), Math.Max(0, innerHash.pos - startPosition))); startPosition = innerHash.pos + innerHash.len + 1; Hyperlink link = new Hyperlink(); link.TextDecorations = null; link.Foreground = System.Windows.Application.Current.Resources["color_hashtag"] as SolidColorBrush; link.TargetName = innerHash.name; link.Inlines.Add("#" + innerHash.name); link.ToolTip = "Open hashtag #" + innerHash.name; link.Cursor = Cursors.Hand; link.Click += new RoutedEventHandler(hashtag_Click); this.Inlines.Add(link); this.Inlines.Add(" "); } else if (typeof(Entities.Mention) == entity.GetType()) { Entities.Mention innerMention = entity as Entities.Mention; this.Inlines.Add(text.Substring(Math.Min(startPosition, text.Length - 1), Math.Max(0, innerMention.pos - startPosition))); startPosition = innerMention.pos + innerMention.len + 1; Hyperlink link = new Hyperlink(); link.TextDecorations = null; link.Foreground = System.Windows.Application.Current.Resources["color_username"] as SolidColorBrush;; link.TargetName = innerMention.name; link.Inlines.Add("@" + innerMention.name); link.ToolTip = "Open user info of @" + innerMention.name; link.Cursor = Cursors.Hand; link.Click += new RoutedEventHandler(username_Click); this.Inlines.Add(link); this.Inlines.Add(" "); } } if (startPosition < text.Length) { this.Inlines.Add(text.Substring(startPosition - 1)); } } } } catch (Exception exp) { Console.WriteLine(exp.Message); } }