public ChatWindow(DTO_Friend _df, UserInfo _u, Window _w) { InitializeComponent(); w = _w; //将自己的信息存入消息框tag MessageValue.Tag = _u; //获取本地聊天记录 Dictionary <string, List <DTO_SMess> > dic = FilesHelper.FileHelper.ReadFMessages(_u.UI_Number); //提取好友信息 if (dic.Count > 0) { List <string> li = dic.Keys.ToList(); foreach (var item in (w as Main).GetFriends(li)) { AddOneUser(item); messages.AddRange(dic[item._Number]); } List <DTO_SMess> lis = dic[(this.Tag as DTO_Friend)._Number]; foreach (var item in lis) { AddMess(item); } } //添加一个可聊天好友 AddOneUser(_df); }
/// <summary> /// 选择和谁聊天 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void sp_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //获取选择的好友 StackPanel sp = sender as StackPanel; //得到好友信息 DTO_Friend df = sp.Tag as DTO_Friend; if (!df._Number.Equals((this.Tag as DTO_Friend)._Number)) { //清空消息展示框 SendMessages.Children.Clear(); mysv.ScrollToVerticalOffset(0); this.Title = string.IsNullOrEmpty(df._Remark) ? df._Nike : df._Remark; this.Tag = df; //添加聊天消息 foreach (var item in messages.Where(a => a.Despatcher.UI_Number.Equals(df._Number) || a.SendToNum._Number.Equals(df._Number)).ToList()) { AddMess(item); } } }
/// <summary> /// 添加一个聊天用户 /// </summary> /// <param name="_df"></param> void AddOneUser(DTO_Friend _df) { //创建容器 StackPanel sp = new StackPanel(); //设置内容排列方式 sp.Orientation = Orientation.Horizontal; sp.MouseLeftButtonDown += sp_MouseLeftButtonDown; //设置边距 sp.Margin = new Thickness(3, 3, 3, 0); sp.Tag = _df; //头像 Image img = new Image(); img.Source = new BitmapImage(new Uri("./HeadImgs/h1.bmp", UriKind.Relative)); img.Width = 30; img.Height = 30; img.Clip = new EllipseGeometry(new Point(15, 15), 15, 15); sp.Children.Add(img); //好友名称 TextBlock tb = new TextBlock(); //设置好友名称 string nick = string.IsNullOrEmpty(_df._Remark) ? _df._Nike : _df._Remark; tb.Text = nick.Length > 6 ? nick.Substring(0, 3) + "..." : nick; tb.VerticalAlignment = System.Windows.VerticalAlignment.Center; tb.FontSize = 15; sp.Children.Add(tb); bool isadd = true; foreach (var item in messagefriendslist.Children) { if (((item as StackPanel).Tag as DTO_Friend)._Number == _df._Number) { isadd = false; } } if (isadd) { messagefriendslist.Children.Add(sp); } this.Tag = _df; this.Title = string.IsNullOrEmpty(_df._Remark) ? _df._Nike : _df._Remark; }
/// <summary> /// 添加一个用户聊天 /// </summary> /// <param name="_df"></param> public void AddFriend(DTO_Friend _df) { AddOneUser(_df); }