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;
            });
        }
Exemplo n.º 2
0
 public PluginManagerViewModel(IPluginsManager pluginsManager, IWindowManager windowManager)
 {
     WindowManager  = windowManager;
     PluginsManager = pluginsManager;
     InitializePlugins();
     _onPluginLoad = PluginsManager.OnPluginLoad((descriptor) =>
     {
         AddPlugin(descriptor);
         WindowManager.BeginUIThreadScope(() => OnPropertyChanged(new PropertyChangedEventArgs(descriptor.ToString())));
     });
     _onPluginUnload = PluginsManager.OnPluginUnload((descriptor) =>
     {
         WindowManager.BeginUIThreadScope(() => OnPropertyChanged(new PropertyChangedEventArgs(descriptor.ToString())));
     });
     _onPluginInitialized = PluginsManager.OnPluginInitialized((descriptor) =>
     {
         WindowManager.BeginUIThreadScope(() => OnPropertyChanged(new PropertyChangedEventArgs(descriptor.ToString())));
     });
 }