public void OpenFile()
        {
            var gpxFile = _openFileIO.Show(new IODialogInfo()
            {
                Title   = "Open GPX File",
                Filters = new[] { "GPX Files|*.gpx", "All Files|*.*" }
            });

            if (!String.IsNullOrEmpty(gpxFile))
            {
                var analyzer = new GpxAnalysis.GpxAnalyzer();

                CurrentTracks.Clear();
                CurrentTracks.AddRange(analyzer.GetTracks(gpxFile));

                foreach (var track in Tracks)
                {
                    track.PropertyChanged -= TrackName_PropertyChanged;
                }
                Tracks.CollectionChanged -= M_Tracks_CollectionChanged;

                Tracks = new ObservableCollection <TrackNameVM>(from track in CurrentTracks
                                                                select GenerateNewTrackName(track.Name, true));
                Tracks.CollectionChanged += M_Tracks_CollectionChanged;
            }
        }
        public void RefreshGraph()
        {
            if (CurrentTracks.Count > 0)
            {
                var analyzer = new GpxAnalysis.GpxAnalyzer();

                var useTrack = analyzer.MergeTrackPoints(from track in CurrentTracks
                                                         join trackname in Tracks on track.Name equals trackname.Title
                                                         where trackname.IsSelected
                                                         select track);

                Graph = analyzer.GetGraphFromTrack(new GpsTrack()
                {
                    Name = "all", Points = useTrack.ToList()
                }, true);

                Points = new ObservableCollection <DataPoint>(Graph.Points.Select(pp => new DataPoint()
                {
                    X = pp.Distance, Y = pp.Elevation
                }));

                ElevLegend = String.Format(
                    @"Distance: {0:0.00}mi
.  
Min Elevation: {4:0.00}ft
Max Elevation: {5:0.00}ft
.  
Elevation Gain: {1:0.00}ft
Elevation Loss: {2:0.00}ft
Cumulative Change: {3:0.00}ft",
                    Graph.TotalDistance, Graph.TotalElevationGain, Graph.TotalElevationLoss,
                    (Graph.TotalElevationGain + Graph.TotalElevationLoss),
                    Graph.MinElevation, Graph.MaxElevation);

                SetMinMax();
            }
        }