示例#1
0
        private void featuresList_SelectionChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            FeatureViewModel entity = featuresList.SelectedValue as FeatureViewModel;

            if (entity != null)
            {
                e.Handled = true;
                ViewModel.SelectedEntity = entity;
                var overlay = GisEditor.SelectionManager.GetSelectionOverlay();
                if (overlay != null)
                {
                    overlay.StandOutHighlightFeatureLayer.InternalFeatures.Clear();
                    if (ViewModel.FeatureEntities.SelectMany(l => l.FoundFeatures).Any(en => en == entity))
                    {
                        overlay.StandOutHighlightFeatureLayer.InternalFeatures.Add(entity.Feature);
                    }
                    GisEditor.ActiveMap.Refresh(overlay);
                }
            }
            else
            {
                FeatureLayerViewModel layerEntity = featuresList.SelectedValue as FeatureLayerViewModel;
                if (layerEntity != null)
                {
                    var featureEntity = layerEntity.FoundFeatures.FirstOrDefault();
                    if (featureEntity != null)
                    {
                        featureEntity.IsSelected = true;
                        ViewModel.SelectedEntity = featureEntity;
                    }
                }
            }
        }
        public FeatureAttributeWindow(Dictionary <FeatureLayer, Collection <Feature> > features, bool alwaysPrompt)
        {
            InitializeComponent();
            Closing            += FeatureAttributeWindow_Closing;
            chbPrompt.IsChecked = alwaysPrompt;

            Collection <FeatureLayerViewModel> layerEntities = new Collection <FeatureLayerViewModel>();

            foreach (var item in features)
            {
                FeatureLayerViewModel featureLayerModel = new FeatureLayerViewModel();
                featureLayerModel.LayerName = item.Key.Name;
                foreach (var feature in item.Value)
                {
                    featureLayerModel.FoundFeatures.Add(new FeatureViewModel(feature, item.Key));
                }
                layerEntities.Add(featureLayerModel);
            }

            featuresList.ItemsSource = layerEntities;

            if (layerEntities.Count > 0)
            {
                layerEntities[0].FoundFeatures.FirstOrDefault().IsSelected = true;
            }

            DataGridCellEditEndingDelegate = GridCellEditing;
        }
        public void RefreshFeatureEntities(Dictionary <FeatureLayer, Collection <Feature> > selectedFeatureEntities)
        {
            FeatureEntities.Clear();
            SelectedEntity = null;

            Application.Current.Dispatcher.BeginInvoke(() =>
            {
                FeatureEntities.Clear();
                foreach (var item in selectedFeatureEntities)
                {
                    FeatureLayerViewModel entity = new FeatureLayerViewModel {
                        LayerName = item.Key.Name
                    };
                    foreach (var tmpFeature in item.Value)
                    {
                        entity.FoundFeatures.Add(new FeatureViewModel(tmpFeature, item.Key));
                    }
                    FeatureEntities.Add(entity);
                }

                if (FeatureEntities.Count > 0 && FeatureEntities[0].FoundFeatures.Count > 0)
                {
                    selectedEntity = FeatureEntities[0].FoundFeatures[0];
                    RaisePropertyChanged(() => SelectedDataView);
                }
            }, System.Windows.Threading.DispatcherPriority.ApplicationIdle);
        }
示例#4
0
        private void FindFeatures(IEnumerable <FeatureLayer> selectedLayers)
        {
            IsBusy = true;
            foreach (var layer in selectedLayers)
            {
                Task.Factory.StartNew(() =>
                {
                    Collection <Feature> features = new Collection <Feature>();
                    layer.SafeProcess(() =>
                    {
                        Collection <Feature> allFeatures = new Collection <Feature>();
                        allFeatures         = layer.QueryTools.GetAllFeatures(layer.GetDistinctColumnNames());
                        var queriedFeatures = allFeatures.Where(f =>
                        {
                            bool hasValue = f.ColumnValues.Values
                                            .Any(value => value.ToUpperInvariant().Contains(FindValue.ToUpperInvariant()));
                            return(hasValue);
                        });

                        foreach (var item in queriedFeatures)
                        {
                            features.Add(item);
                        }
                    });

                    FeatureLayerViewModel entity = new FeatureLayerViewModel {
                        LayerName = layer.Name
                    };
                    foreach (var tmpFeature in features)
                    {
                        entity.FoundFeatures.Add(new FeatureViewModel(tmpFeature, layer));
                    }

                    Application.Current.Dispatcher.BeginInvoke(() =>
                    {
                        if (!FeatureEntities.Any(f => f.LayerName == entity.LayerName) && entity.FoundFeatures.Count > 0)
                        {
                            FeatureEntities.Add(entity);
                            if (FeatureEntities.Count > 0 && FeatureEntities[0].FoundFeatures.Count > 0)
                            {
                                selectedEntity = FeatureEntities[0].FoundFeatures[0];
                                RaisePropertyChanged(() => SelectedDataView);
                            }
                        }
                        IsBusy = false;
                    }, DispatcherPriority.ApplicationIdle);
                });
            }
        }
        private void featuresList_SelectionChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            FeatureViewModel entity = featuresList.SelectedValue as FeatureViewModel;

            if (entity != null)
            {
                e.Handled = true;
            }
            else
            {
                FeatureLayerViewModel layerEntity = featuresList.SelectedValue as FeatureLayerViewModel;
                if (layerEntity != null)
                {
                    layerEntity.FoundFeatures.FirstOrDefault().IsSelected = true;
                }
            }
            OnSelectionFeatureChanged(e);
        }
示例#6
0
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            FeatureViewModel entity = featuresList.SelectedValue as FeatureViewModel;

            if (entity == null)
            {
                FeatureLayerViewModel layerEntity = featuresList.SelectedValue as FeatureLayerViewModel;
                if (layerEntity != null)
                {
                    entity = layerEntity.FoundFeatures.FirstOrDefault();
                }
            }

            FeatureWktWindow window = new FeatureWktWindow(entity)
            {
                WindowStyle = WindowStyle.ToolWindow
            };

            window.ShowDialog();
        }