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();
        }