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