private void DataContext_PropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (e.PropertyName == "CurrentIndex" && dataContext.CurrentIndex > -1)
     {
         SeriesListView.ScrollIntoView(dataContext.RetrievedSeries[dataContext.CurrentIndex]);
     }
 }
        private void DataContext_SelectTheseSeries(object sender, EventArgs e)
        {
            var series = sender as IEnumerable <string>;

            SeriesListView.UnselectAll();
            foreach (var item in series)
            {
                SeriesListView.SelectedItems.Add(item);
            }
            SeriesListView.ScrollIntoView(series.Last());
        }
        private void TextBlock_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed && dataContext != null)
            {
                if (sender is ListViewItem serie)
                {
                    var visibleSeries = dataContext.RetrievedSeries.ToList();
                    SeriesListView.SelectionMode = SelectionMode.Multiple;
                    var thisSerie    = serie.Content.ToString();
                    var indexOfFirst = SeriesListView.SelectedIndex;
                    var indexOfLast  = dataContext.RetrievedSeries.IndexOf(thisSerie);

                    if (!isMouseDown)
                    {
                        isMouseDown = true;
                    }

                    if (indexOfFirst == indexOfLast)
                    {
                        SeriesListView.UnselectAll();
                        SeriesListView.SelectedItems.Add(visibleSeries[indexOfFirst]);
                    }
                    else if (indexOfFirst < indexOfLast)
                    {
                        for (int i = SeriesListView.SelectedItems.Count - 1; i > 0; i--)
                        {
                            SeriesListView.SelectedItems.RemoveAt(i);
                        }
                        for (int i = indexOfFirst; i <= indexOfLast; i++)
                        {
                            SeriesListView.SelectedItems.Add(visibleSeries[i]);
                        }
                    }
                    else if (indexOfFirst > indexOfLast)
                    {
                        for (int i = SeriesListView.SelectedItems.Count - 1; i > 0; i--)
                        {
                            SeriesListView.SelectedItems.RemoveAt(i);
                        }
                        for (int i = indexOfFirst; i >= indexOfLast; i--)
                        {
                            SeriesListView.SelectedItems.Add(visibleSeries[i]);
                        }
                    }
                }
            }
        }