public ConfigurationItemViewModel(Type propertyType, string name, DependencySet dependencySet, IWindowManager windowManager)
        {
            Name      = name;
            ValueType = propertyType;
            var type = ComponentFactory.GetControl(propertyType);

            if (dependencySet.HasAttach(WpfFeatureBuilder.WpfRenderControl))
            {
                var customControls = dependencySet.GetAttach <Dictionary <string, Type> >(WpfFeatureBuilder.WpfRenderControl);
                if (customControls.ContainsKey(name))
                {
                    type = customControls[name];
                }
            }
            if (dependencySet.HasAttach(WpfFeatureBuilder.WpfMultiOptionFields))
            {
                var multiSet = dependencySet.GetAttach <HashSet <string> >(WpfFeatureBuilder.WpfMultiOptionFields);
                if (multiSet.Contains(name))
                {
                    Value = new ConfigurationMultiValueViewModel(name, dependencySet);
                }
            }
            if (Value == null)
            {
                Value = new ConfigurationSingleValueViewModel(name, dependencySet);
            }

            windowManager.BeginUIThreadScope(() =>
            {
                InputControl             = (Control)Activator.CreateInstance(type);
                InputControl.DataContext = Value;
            });
        }
        public ConfigurationMultiValueViewModel(string name, DependencySet dependencySet)
            : base(name, dependencySet)
        {
            var attachMap = dependencySet.GetAttach <Dictionary <string, object> >(WpfFeatureBuilder.WpfExtraData);

            ItemSource = attachMap[name];
            (ItemSource as INotifyCollectionChanged).CollectionChanged += ConfigurationMultiValueViewModel_CollectionChanged;
        }