Beispiel #1
0
        private async void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
        {
            var scrollViewer = (ScrollViewer)sender;

            if (scrollViewer.VerticalOffset < 0.001)
            {
                LoadingRing.IsActive   = true;
                LoadingRing.Visibility = Visibility.Visible;
                var skip = viewModel.Messages.Count;
                var item = viewModel.Messages.FirstOrDefault();
                try
                {
                    var request = new GetMessagesRequest
                    {
                        ChannelId = viewModel.SelectedChannel.Id
                    };
                    var result = await HttpApi.Channel.GetMessagesAsync(request, skip, 50, HttpApi.AuthToken);

                    for (var i = result.Count - 1; i >= 0; i--)
                    {
                        viewModel.Messages.Insert(0, result[i]);
                    }
                    MessageView.ScrollIntoView(item);
                }
                catch (ApiException ex)
                {
                    await ex.ShowErrorDialog();
                }
                finally
                {
                    LoadingRing.IsActive   = false;
                    LoadingRing.Visibility = Visibility.Collapsed;
                }
            }
        }
Beispiel #2
0
        private async void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "Messages")
            {
                await Task.Delay(100);

                MessageView.ScrollIntoView(viewModel.Messages.LastOrDefault());
            }
        }
Beispiel #3
0
        public ChatPage()
        {
            InitializeComponent();
            viewModel = (ChatViewModel)DataContext;
            viewModel.PropertyChanged += ViewModel_PropertyChanged;
            viewModel.Recieved         = async message =>
            {
                await Task.Delay(100);

                MessageView.ScrollIntoView(viewModel.Messages.LastOrDefault());
            };
            MessageView.Loaded += (s, a) =>
            {
                var scrollViewer = GetScrollViewer(MessageView);
                scrollViewer.ViewChanged += ScrollViewer_ViewChanged;
            };
            SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
        }