protected override void UpdateUICore(UserControl styleItemUI)
        {
            base.UpdateUICore(styleItemUI);

            var viewModel = styleItemUI.DataContext as ValueStyleViewModel;

            if (viewModel != null && viewModel.ValueItems.Count != Children.Count)
            {
                List <ValueItemEntity> temps = viewModel.ValueItems.ToList();
                viewModel.ValueItems.Clear();
                foreach (var subItem in Children.OfType <StyleLayerListItem>())
                {
                    var valueItem = subItem.ConcreteObject as ValueItem;
                    var item      = new ValueItemEntity();
                    item.PropertyChanged += Item_PropertyChanged;
                    item.ValueItem        = valueItem;
                    item.MatchedValue     = valueItem.Value;
                    item.Image            = StyleHelper.GetImageFromStyle(valueItem.CustomStyles);
                    ValueItemEntity temp = temps.FirstOrDefault(v => v.ValueItem == valueItem);
                    if (temp != null)
                    {
                        item.Count = temp.Count;
                    }
                    viewModel.ValueItems.Add(item);
                }
            }
        }
        private ValueItemEntity GetValueItemEntity(Image image, string matchedValue, ValueItem valueItem)
        {
            ValueItemEntity valueItemEntity = new ValueItemEntity();

            valueItemEntity.Image            = image;
            valueItemEntity.MatchedValue     = matchedValue;
            valueItemEntity.ValueItem        = valueItem;
            valueItemEntity.PropertyChanged += new PropertyChangedEventHandler(ValueItemEntity_PropertyChanged);
            return(valueItemEntity);
        }
        private void InitValueItem <T>(StyleCategories styleProviderType, DistinctColumnValue columnValueGroup, string columnName) where T : Style
        {
            Collection <Style> styles = new Collection <Style>();

            if (styleProviderType == StyleCategories.Composite)
            {
                Collection <StylePlugin> plugins = new Collection <StylePlugin>();
                var areaPlugin = GisEditor.StyleManager.GetDefaultStylePlugin(StyleCategories.Area);
                if (areaPlugin != null)
                {
                    plugins.Add(areaPlugin);
                }
                var linePlugin = GisEditor.StyleManager.GetDefaultStylePlugin(StyleCategories.Line);
                if (linePlugin != null)
                {
                    plugins.Add(linePlugin);
                }
                var pointPlugin = GisEditor.StyleManager.GetDefaultStylePlugin(StyleCategories.Point);
                if (pointPlugin != null)
                {
                    plugins.Add(pointPlugin);
                }
                foreach (var item in plugins)
                {
                    Style style = GetStyleByPlugin(item);
                    if (style != null)
                    {
                        styles.Add(style);
                    }
                }
            }
            else
            {
                var styleProvider = GisEditor.StyleManager.GetDefaultStylePlugin(styleProviderType);
                if (styleProvider != null)
                {
                    Style style = GetStyleByPlugin(styleProvider);
                    if (style != null)
                    {
                        styles.Add(style);
                    }
                }
            }

            if (styles.Count > 0)
            {
                ValueItem valueItem = new ValueItem();
                valueItem.Value = columnValueGroup.ColumnValue;
                styles.ForEach(s => valueItem.CustomStyles.Add(s));

                ValueItemEntity valueItemEntity = ValueItems.FirstOrDefault(tmpItem
                                                                            => tmpItem.MatchedValue.Equals(columnValueGroup.ColumnValue, StringComparison.Ordinal));

                if (valueItemEntity == null)
                {
                    valueItem       = new ValueItem();
                    valueItem.Value = columnValueGroup.ColumnValue;
                    styles.ForEach(s => valueItem.CustomStyles.Add(s));

                    var image = StyleHelper.GetImageFromStyle(styles);
                    var newValueItemEntity = GetValueItemEntity(image, columnValueGroup.ColumnValue, valueItem);
                    newValueItemEntity.Count = columnValueGroup.ColumnValueCount;
                    ValueItems.Add(newValueItemEntity);
                }
                else
                {
                    //valueItemEntity.Update(valueItem);
                    valueItemEntity.Count = columnValueGroup.ColumnValueCount;
                }
            }
        }