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"));
                }
            }
        }