private async void UpdateView() { try { if (CurrentChat == null) { return; } var messages = await Data.Current.GetMessagesFromChatAsync(CurrentChat); messages = messages.Skip(Messages.Count - ChatPanel.Children.Cast <UIElement>().Count(x => x.Visibility == Visibility.Collapsed)).ToList(); if (Messages.Any() && messages.Any(x => x.From.Id != App.BUser?.Id)) { Media.Play(); } Messages.AddRange(messages); foreach (var mes in messages) { if (mes?.From?.Id == null) { continue; } ChatPanel.Children.Add(new MessageView(mes, mes.From.Id == App.BUser?.Id)); } if (messages.Any()) { ChatScroll.ScrollToEnd(); } } catch { } }
private void AddMessageLine(UserModel user, string message) { TextBlock tb = new TextBlock(); if (user != null) { //Kolor nicka var nickRun = new Run(); nickRun.Foreground = new SolidColorBrush(Colors.LightGray); nickRun.Text = user.Username; nickRun.FontWeight = FontWeights.Bold; //Cenzor if (Properties.Settings.Default.Censor) { IEnumerable <Regex> badWordMatchers = this.BadWords. Select(x => new Regex(string.Format(PatternTemplate, x), Options)); message = badWordMatchers. Aggregate(message, (current, matcher) => matcher.Replace(current, CensoredText)); } //Tekst var messageRun = new Run(); messageRun.Foreground = new SolidColorBrush(Colors.White); messageRun.Text = ": " + message; tb.Inlines.Add(nickRun); //Dodajemy do textblocka tb.Inlines.Add(messageRun); } else { tb.Text = "Dealer: " + message; tb.Foreground = new SolidColorBrush(Colors.Gray); } tb.TextWrapping = TextWrapping.Wrap; Chat.Children.Add(tb); ChatScroll.ScrollToEnd(); }
public Chat() { InitializeComponent(); ChatScroll.ScrollToEnd(); }