public void MsgCallBack(string msg) { // Если в сообщении есть ссылка на картинку то вытаскиваем её из тега <ы> if (msg.Contains("<ы>")) { try { Regex rx = new Regex("<ы>.*</ы>"); var m = Regex.Match(msg, "<ы>.*</ы>"); // Ищем тег <ы></ы> string imageSrc = m.Value.Replace("<ы>", string.Empty).Replace("</ы>", string.Empty).ToString(); // Вытаскиваем тег из строки msg = rx.Replace(msg, string.Empty); // Убираем сам тег Image img = new Image(); img.Width = 225; img.Height = 225; img.Source = new BitmapImage(new Uri(imageSrc)); // Пихаем картинку по ссылке в переменную TextBlock tx = new TextBlock(); // Пихаем в текст блок с переносами и ставим ему ширину как у чата tx.TextWrapping = TextWrapping.Wrap; tx.Width = ChatList.Width; tx.Text = msg; ChatList.Items.Add(tx); // Добавляем сначала текст потом картинку ChatList.Items.Add(img); } catch (Exception e) { //System.Windows.MessageBox.Show(e.Message); } } else // Если в сообщении нет ссылки на картинку то просто отправляем его { // Чтобы работали переносы TextBlock tx = new TextBlock(); tx.TextWrapping = TextWrapping.Wrap; // Говорим текстбоксу чтобы переносил строки tx.Width = ChatList.Width; // Говорим текстбоксу чтобы подстраивался под ширину чата tx.Text = msg; // Добавляем текст с переносами ChatList.Items.Add(tx); ChatList.ScrollIntoView(ChatList.Items[ChatList.Items.Count - 1]); // Скролим чат на последнее сообщение } }
private void MsgAdded(string obj) { var item = ChatList.Items[ChatList.Items.Count - 1]; ChatList.ScrollIntoView(item); }