Exemple #1
0
        private void AddMessage(string v)
        {
            ListBoxItem item = new ListBoxItem()
            {
                MaxWidth = 250
            };
            string     user    = v.Substring(0, v.IndexOf(':'));
            string     message = v.Substring(v.IndexOf(':') + 1);
            StackPanel stack   = new StackPanel();
            Border     border  = new Border()
            {
                CornerRadius = new CornerRadius(5)
            };

            border.SetResourceReference(Control.BackgroundProperty, "ElementsColor");
            border.Child = new TextBlock()
            {
                TextWrapping = TextWrapping.Wrap, Margin = new Thickness(5), Text = message
            };
            TextBlock tbMetaData = new TextBlock()
            {
                TextWrapping = TextWrapping.Wrap, HorizontalAlignment = user == UserName ? HorizontalAlignment.Right : HorizontalAlignment.Left, Margin = new Thickness(0, 5, 0, 5), Text = $"{DateTime.Now.ToShortTimeString()} {user}"
            };

            stack.Children.Add(border);
            stack.Children.Add(tbMetaData);
            item.Content             = stack;
            item.HorizontalAlignment = user == UserName ? HorizontalAlignment.Right : HorizontalAlignment.Left;
            MessagesListBox.Items.Add(item);
            MessagesListBox.ScrollIntoView(item);
        }
Exemple #2
0
        private void AddToMessages(ChatMessage chatMessage)
        {
            _messages.Add(chatMessage);
            MessageBox.Text = string.Empty;

            var response = Client.PostMessage(chatMessage);

            _messages.Add(response);

            int lastMessageIndex = MessagesListBox.Items.Count - 1;

            MessagesListBox.ScrollIntoView(MessagesListBox.Items[lastMessageIndex]);
        }
 private void ActiveConvoView_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
 {
     if (AtBottom())
     {
         scrollViewer?.ScrollToBottom();
     }
     else
     {
         if (loadingPrevMsgs)
         {
             loadingPrevMsgs = false;
             MessagesListBox.ScrollIntoView(lastItem);
         }
     }
 }
Exemple #4
0
        private void ScrollToBottomButton_OnClick(object sender, EventArgs e)
        {
            var _ = OnPressedCachedImage(ScrollToBottomButton);

            object last = MessagesListBox.ItemsSource.Cast <object>().LastOrDefault();

            if (last is null)
            {
                return;
            }

            LoadPreviousMessagesButton.IsVisible = LoadPreviousMessagesButton.IsEnabled = false;

            MessagesListBox.ScrollTo(last, ScrollToPosition.Center, (e as ScrollToBottomEventArgs)?.Animated ?? true);
        }
Exemple #5
0
        private void LoadPreviousMessagesButton_OnClicked(object sender, EventArgs e)
        {
            object scrollLock = MessagesListBox.ItemsSource.Cast <object>().FirstOrDefault();

            if (scrollLock is null)
            {
                return;
            }

            if (BindingContext is ActiveConvoViewModel vm)
            {
                vm.LoadPreviousMessages().ContinueWith(_ =>
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        LoadPreviousMessagesButton.IsVisible = LoadPreviousMessagesButton.IsEnabled = false;
                        MessagesListBox.ScrollTo(scrollLock, ScrollToPosition.Start, false);
                    });
                });
            }
        }