private async Task SetPluginCollection() { var pluginList = await Task.Run(() => { var pluginManager = new PluginManager(PluginDirectory); return(pluginManager.ValidPlugins(typeof(IDataEngineHostView)) .Select(token => new PluginViewModel(token)) .ToList()); }); PluginCollection = CollectionViewSource.GetDefaultView(pluginList); PluginCollection.GroupDescriptions.Add(new PropertyGroupDescription("Prefix", null, StringComparison.InvariantCultureIgnoreCase)); PluginCollection.SortDescriptions.Add(new SortDescription("Prefix", ListSortDirection.Ascending)); PluginCollection.SortDescriptions.Add(new SortDescription("PluginName", ListSortDirection.Ascending)); PluginCollection.Filter += Filter; PluginCollection.MoveCurrentToFirst(); var selected = JsonConvert.DeserializeObject <PluginConfig>(Settings.Default.SelectedPlugin ?? ""); SelectedPlugin = pluginList.FirstOrDefault(p => p.PluginName == selected?.PluginName); if (SelectedPlugin != null) { SelectedPlugin.HostType = selected.HostType; SelectedPlugin.TeradataHostType = selected.TeradataHostType; SelectedPlugin.RestartDelay = selected.RestartDelay; SelectedPlugin.TestEmail = selected.TestEmail; } else { SelectedPlugin = PluginCollection.CurrentItem as PluginViewModel; } }