public void AddMessage(MessageViewModel message) { Messages.Add(message); ListViewMessages.Items.MoveCurrentToLast(); ListViewMessages.ScrollIntoView(ListViewMessages.Items.CurrentItem); }
private async void ListBoxRooms_SelectionChanged(object sender, SelectionChangedEventArgs e) { RoomViewModel selectedRoom = ListBoxRooms.SelectedItem as RoomViewModel; if (selectedRoom != null) { await hub.Join(selectedRoom.Name); User.CurrentRoom = selectedRoom.Name; txtRoomName.Text = User.CurrentRoom; // Get users and messages Users = await hub.GetUsers(selectedRoom.Name); Messages = await hub.GetMessageHistory(selectedRoom.Name); // Bind them to ListViews ListViewMessages.ItemsSource = Messages; ListViewUsers.ItemsSource = Users; // Auto-scroll to bottom ListViewMessages.Items.MoveCurrentToLast(); ListViewMessages.ScrollIntoView(ListViewMessages.Items.CurrentItem); txtOnlineCounter.Text = string.Format("WHO'S HERE ({0})", Users.Count); CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(ListViewUsers.ItemsSource); view.Filter = Filter; } }
private void RegisterEvents() { connection.On <MessageViewModel>("newMessage", (message) => { Messages.Add(message); ListViewMessages.Items.MoveCurrentToLast(); ListViewMessages.ScrollIntoView(ListViewMessages.Items.CurrentItem); }); connection.On <string, string>("getProfileInfo", (displayName, avatar) => { txtUsername.Text = displayName; Uri uri = new Uri(@"/Images/Avatars/" + avatar, UriKind.Relative); imgAvatar.Source = new BitmapImage(uri); }); connection.On <UserViewModel>("addUser", (user) => { Users.Add(user); txtOnlineCounter.Text = $"WHO'S HERE ({Users.Count})"; }); connection.On <UserViewModel>("removeUser", (user) => { var userToRemove = Users.Where(u => u.Username == user.Username).FirstOrDefault(); Users.Remove(userToRemove); txtOnlineCounter.Text = $"WHO'S HERE ({Users.Count})"; }); connection.On <RoomViewModel>("addChatRoom", (room) => { Rooms.Add(room); }); connection.On <RoomViewModel>("removeChatRoom", (room) => { var roomToRemove = Rooms.Where(r => r.Id == room.Id).FirstOrDefault(); Rooms.Remove(roomToRemove); }); connection.On <string>("onError", (error) => { MessageBox.Show(error); }); connection.On <string>("onRoomDeleted", (message) => { ListBoxRooms.SelectedIndex = 0; txtOnlineCounter.Text = $"WHO'S HERE ({Users.Count})"; }); }
private async void ListBoxRooms_SelectionChanged(object sender, SelectionChangedEventArgs e) { var selectedRoom = ListBoxRooms.SelectedItem as RoomViewModel; if (selectedRoom != null) { await connection.SendAsync("Join", selectedRoom.Name); User.CurrentRoom = selectedRoom.Name; txtRoomName.Text = selectedRoom.Name; await GetUsers(selectedRoom.Name); await GetMessages(selectedRoom.Name); ListViewMessages.Items.MoveCurrentToLast(); ListViewMessages.ScrollIntoView(ListViewMessages.Items.CurrentItem); txtOnlineCounter.Text = $"WHO'S HERE ({Users.Count})"; CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(ListViewUsers.ItemsSource); view.Filter = Filter; } }