private void AutoGenerate() { if (string.IsNullOrEmpty(ColumnName)) { System.Windows.Forms.MessageBox.Show(GisEditor.LanguageManager.GetStringResource("ValueStyleViewModelColumnCanntEmptyMessage"), "Column is Empty"); } else { FeatureLayer featureLayer = RequiredValues.FeatureLayer; FeatureLayerPlugin featureLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(featureLayer.GetType()).FirstOrDefault() as FeatureLayerPlugin; if (featureLayerPlugin == null) { return; } string selectedColumnName = ColumnName; featureLayer.Open(); if (featureLayer.FeatureSource.CanGetCountQuickly()) { int count = featureLayer.FeatureSource.GetCount(); if (count > 500000) { //MessageBoxResult result = MessageBox.Show(string.Format("{0} contains a large amount of records, it might spend too much time to process. Do you want to continue?", featureLayer.Name), "Info", MessageBoxButton.YesNo, MessageBoxImage.Information); //if (result == MessageBoxResult.No) //{ // return; //} } } //Collection<DistinctColumnValue> distinctColumnValues = null; if (distinctColumnValues == null) { featureLayer.SafeProcess(() => { distinctColumnValues = featureLayer.FeatureSource.GetDistinctColumnValues(selectedColumnName); }); } if (distinctColumnValues != null && distinctColumnValues.Count() > 0) { SimpleShapeType shpType = SimpleShapeType.Unknown; featureLayer.SafeProcess(() => { shpType = featureLayerPlugin.GetFeatureSimpleShapeType(featureLayer); }); foreach (var columnValue in distinctColumnValues) { switch (shpType) { case SimpleShapeType.Point: InitValueItem <PointStyle>(StyleCategories.Point, columnValue, selectedColumnName); break; case SimpleShapeType.Line: InitValueItem <LineStyle>(StyleCategories.Line, columnValue, selectedColumnName); break; case SimpleShapeType.Area: InitValueItem <AreaStyle>(StyleCategories.Area, columnValue, selectedColumnName); break; case SimpleShapeType.Unknown: InitValueItem <Style>(StyleCategories.Composite, columnValue, selectedColumnName); break; } } var itemSourceList = ValueItems.OrderBy(itemValue => itemValue.ValueItem.Value).ToList(); ValueItems.Clear(); foreach (var item in itemSourceList.Where(i => !String.IsNullOrEmpty(i.MatchedValue))) { ValueItems.Add(item); } foreach (var item in itemSourceList.Where(i => String.IsNullOrEmpty(i.MatchedValue))) { ValueItems.Add(item); } SyncActualValueItems(); RaisePropertyChanged("ValueItems"); } else { System.Windows.Forms.MessageBox.Show(GisEditor.LanguageManager.GetStringResource("ValueStyleViewModelColumnNoValueMatchedMessage")); } } }