private void LoadDataGrid() { CanMessage[] msgs; if (_isViewChronological) { msgs = _buffer.GetLastMessages(DISPLAY_BUFFER_SIZE); } else { msgs = _buffer.GetDistinctMessages(); ((ObservableCollection <CanMessage>)DgLog.ItemsSource).Clear(); } foreach (var msg in msgs) { ((ObservableCollection <CanMessage>)DgLog.ItemsSource).Add(msg); if (DgLog.Items.Count > DISPLAY_BUFFER_SIZE) { ((ObservableCollection <CanMessage>)DgLog.ItemsSource).RemoveAt(0); } } if (_isViewChronological) { LbCount.Content = ((ObservableCollection <CanMessage>)DgLog.ItemsSource).Count + " on " + DISPLAY_BUFFER_SIZE; // Autoscroll to last item var border = VisualTreeHelper.GetChild(DgLog, 0) as Decorator; if (border != null) { var scroll = border.Child as ScrollViewer; scroll?.ScrollToEnd(); } } else { LbCount.Content = msgs.Length + " messages"; } }
private void LoadDataGrid() { var msgs = _buffer.GetLastMessages(DISPLAY_BUFFER_SIZE); foreach (var msg in msgs) { ((ObservableCollection <CanMessage>)DgLog.ItemsSource).Add(msg); if (DgLog.Items.Count > DISPLAY_BUFFER_SIZE) { ((ObservableCollection <CanMessage>)DgLog.ItemsSource).RemoveAt(0); } } // Autoscroll to last item var border = VisualTreeHelper.GetChild(DgLog, 0) as Decorator; if (border == null) { return; } var scroll = border.Child as ScrollViewer; scroll?.ScrollToEnd(); }