public StartingUpView() { InitializeComponent(); Navigator = new DefaultLinkNavigator(); Task.Factory.StartNew(() => { var configuration = new BusConfiguration(); configuration.EnableFeature <GetMessageTypesFeature>(); SessionContext.Instance.Bus = EndpointConfig.Init(configuration); }, CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default).ContinueWith(_ => { Navigator.Navigate(new Uri("/MessagesView.xaml", UriKind.Relative), this); }); }
public static Inline Parse(string bbCode, FrameworkElement element = null, ILinkNavigator navigator = null) { if (bbCode.IndexOf('[') != -1) { try { return(new BbCodeParser(bbCode, element) { Commands = (navigator ?? DefaultLinkNavigator).Commands }.Parse()); } catch (Exception e) { Logging.Error(e); } } return(new Run { Text = bbCode }); }
/// <summary>Helper for setting <see cref="LinkNavigatorProperty"/> on <paramref name="element"/>.</summary> /// <param name="element"><see cref="DependencyObject"/> to set <see cref="LinkNavigatorProperty"/> on.</param> /// <param name="value">LinkNavigator property value.</param> public static void SetLinkNavigator(this DependencyObject element, ILinkNavigator value) { element.SetValue(LinkNavigatorProperty, value); }
public static Inline ParseEmoji(string bbCode, FrameworkElement element = null, ILinkNavigator navigator = null) { var converted = new StringBuilder(); var lastIndex = 0; var complex = false; for (var i = 0; i < bbCode.Length; i++) { var c = bbCode[i]; if (c == '[') { complex = true; continue; } int length; if (Emoji.IsEmoji(bbCode, i, out length)) { if (lastIndex != i) { converted.Append(bbCode.Substring(lastIndex, i - lastIndex)); } var emoji = bbCode.Substring(i, length); converted.Append($"[img=\"emoji://{EmojiToNumber(emoji)}\"]{emoji}[/img]"); lastIndex = i + length; complex = true; } // Even if it’s not an emoji, it still would be better to jump over high surrogates if (length > 1) { i += length - 1; } } if (converted.Length > 0) { converted.Append(bbCode.Substring(lastIndex)); bbCode = converted.ToString(); } if (complex) { try { return(new BbCodeParser(bbCode, element) { Commands = (navigator ?? DefaultLinkNavigator).Commands }.Parse()); } catch (Exception e) { Logging.Error(e); } } return(new Run { Text = bbCode }); }