@@ -122,48 +122,60 @@ private void ListViewItemPreviewDeleteKeyDown(object sender, KeyEventArgs e)
122
122
{
123
123
if ( e == null || e . Key == Key . Delete )
124
124
{
125
- foreach ( var item in lvwFiles . SelectedItems . Cast < TrackInfo > ( ) . ToArray ( ) )
126
- {
127
- arcMap . GraphicsOverlays . Remove ( item . Overlay ) ;
128
- Tracks . Remove ( item ) ;
129
- }
125
+ RemoveSelectedGpxs ( ) ;
130
126
}
131
127
}
132
128
133
- private async void FileSelectionChanged ( object sender , SelectionChangedEventArgs e )
129
+ private void RemoveSelectedGpxs ( )
134
130
{
135
- if ( arcMap . SelectedTrack != null )
136
- {
137
- arcMap . SelectedTrack . Overlay . Renderer = null ;
138
- arcMap . SelectedTrack . Overlay . Renderer = NormalRenderer ;
139
- }
140
- if ( lvwFiles . SelectedItem == null )
131
+ foreach ( var item in lvwFiles . SelectedItems . Cast < TrackInfo > ( ) . ToArray ( ) )
141
132
{
142
- arcMap . SelectedTrack = null ;
143
- Gpx = null ;
144
- GpxTrack = null ;
145
- chartHelper . Initialize ( ) ;
146
- return ;
133
+ arcMap . GraphicsOverlays . Remove ( item . Overlay ) ;
134
+ Tracks . Remove ( item ) ;
147
135
}
136
+ }
148
137
149
- if ( lvwFiles . SelectedItems . Count > 1 )
138
+ private async void FileSelectionChanged ( object sender , SelectionChangedEventArgs e )
139
+ {
140
+ try
150
141
{
151
- arcMap . SelectedTrack = null ;
152
- Gpx = null ;
153
- GpxTrack = null ;
142
+ if ( arcMap . SelectedTrack != null )
143
+ {
144
+ arcMap . SelectedTrack . Overlay . Renderer = null ;
145
+ arcMap . SelectedTrack . Overlay . Renderer = NormalRenderer ;
146
+ }
147
+ if ( lvwFiles . SelectedItem == null )
148
+ {
149
+ arcMap . SelectedTrack = null ;
150
+ Gpx = null ;
151
+ GpxTrack = null ;
152
+ chartHelper . Initialize ( ) ;
153
+ return ;
154
+ }
154
155
155
- chartHelper . Initialize ( ) ;
156
- }
157
- else
158
- {
159
- arcMap . SelectedTrack = lvwFiles . SelectedItem as TrackInfo ;
156
+ if ( lvwFiles . SelectedItems . Count > 1 )
157
+ {
158
+ arcMap . SelectedTrack = null ;
159
+ Gpx = null ;
160
+ GpxTrack = null ;
160
161
161
- arcMap . SelectedTrack . Overlay . Renderer = CurrentRenderer ;
162
- //arcMap.SelectedTrack.Overlay.Graphics[0].Symbol = CurrentLineSymbol;
162
+ chartHelper . Initialize ( ) ;
163
+ }
164
+ else
165
+ {
166
+ arcMap . SelectedTrack = lvwFiles . SelectedItem as TrackInfo ;
167
+
168
+ arcMap . SelectedTrack . Overlay . Renderer = CurrentRenderer ;
169
+ //arcMap.SelectedTrack.Overlay.Graphics[0].Symbol = CurrentLineSymbol;
163
170
164
- Gpx = arcMap . SelectedTrack . Gpx ;
165
- GpxTrack = arcMap . SelectedTrack . Track ;
166
- await Task . WhenAll ( ZoomToTrackAsync ( ) , UpdateUI ( ) ) ;
171
+ Gpx = arcMap . SelectedTrack . Gpx ;
172
+ GpxTrack = arcMap . SelectedTrack . Track ;
173
+ await Task . WhenAll ( ZoomToTrackAsync ( ) , UpdateUI ( ) ) ;
174
+ }
175
+ }
176
+ catch ( Exception ex )
177
+ {
178
+ App . Log . Error ( "选择Gpx文件时出现错误" , ex ) ;
167
179
}
168
180
}
169
181
@@ -591,10 +603,7 @@ private void ResetTrackButtonClick(object sender, RoutedEventArgs e)
591
603
} ;
592
604
}
593
605
594
- private void RemoveTrackFileMenuClick ( object sender , RoutedEventArgs e )
595
- {
596
- ListViewItemPreviewDeleteKeyDown ( null , null ) ;
597
- }
606
+
598
607
599
608
private async void LinkTrackMenuClick ( object sender , RoutedEventArgs e )
600
609
{
@@ -783,10 +792,6 @@ private async void CaptureScreenButtonClick(object sender, RoutedEventArgs e)
783
792
}
784
793
}
785
794
786
- private async void ZoomToTrackButtonClick ( object sender , RoutedEventArgs e )
787
- {
788
- await ZoomToTrackAsync ( ) ;
789
- }
790
795
791
796
private Task ZoomToTrackAsync ( int time = 500 )
792
797
{
@@ -797,10 +802,38 @@ private Task ZoomToTrackAsync(int time = 500)
797
802
return arcMap . SetViewpointAsync ( new Viewpoint ( GpxTrack . Points . Extent ) , TimeSpan . FromMilliseconds ( time ) ) ; ;
798
803
}
799
804
800
- private void BrowseButtonClick ( object sender , RoutedEventArgs e )
805
+
806
+ private void lvwFiles_PreviewMouseRightButtonDown ( object sender , MouseButtonEventArgs e )
801
807
{
802
- GpxBrowseWindow window = new GpxBrowseWindow ( lvwFiles . SelectedItem as TrackInfo ) ;
803
- window . Show ( ) ;
808
+ ContextMenu menu = new ContextMenu
809
+ {
810
+ PlacementTarget = sender as UIElement
811
+ } ;
812
+
813
+ if ( lvwFiles . SelectedItems . Count > 0 )
814
+ {
815
+ var menuRemove = new MenuItem ( ) { Header = "移除" } ;
816
+ menuRemove . Click += ( s , e ) => RemoveSelectedGpxs ( ) ;
817
+ menu . Items . Add ( menuRemove ) ;
818
+
819
+ if ( lvwFiles . SelectedItems . Count > 1 )
820
+ {
821
+ var menuLink = new MenuItem ( ) { Header = "连接" } ;
822
+ menuLink . Click += LinkTrackMenuClick ;
823
+ menu . Items . Add ( menuLink ) ;
824
+ }
825
+ }
826
+ if ( GpxTrack != null )
827
+ {
828
+ var menuZoom = new MenuItem ( ) { Header = "缩放到轨迹" } ;
829
+ menuZoom . Click += async ( s , e ) => await ZoomToTrackAsync ( ) ;
830
+ menu . Items . Add ( menuZoom ) ;
831
+
832
+ var menuBrowse = new MenuItem ( ) { Header = "浏览" } ;
833
+ menuBrowse . Click += ( s , e ) => new GpxBrowseWindow ( lvwFiles . SelectedItem as TrackInfo ) . Show ( ) ;
834
+ menu . Items . Add ( menuBrowse ) ;
835
+ }
836
+ menu . IsOpen = true ;
804
837
}
805
838
}
806
839
}
0 commit comments