public ColumnViewModelBase Construct(ColumnDefinition def) { // TODO: We need all contexts if SourceAccounts contains more than one id var context = Contexts.Contexts.FirstOrDefault(c => def.SourceAccounts.Contains(c.UserId)); if (context == null) { return(null); } Func <ColumnArgumentsData, ColumnViewModelBase> factoryAction; if (FactoryMap.TryGetValue(def.Type, out factoryAction)) { var argData = new ColumnArgumentsData { Configuration = Configuration, Context = context, Definition = def, Parser = StreamingRepo.GetParser(def) }; var column = factoryAction(argData); column.Width = def.Width; column.Muter = Muter; column.Cache = Cache; column.Dispatcher = Dispatcher; column.ViewServiceRepository = ViewServiceRepository; return(column); } return(null); }
private ColumnViewModelBase UserColumn(ColumnArgumentsData args) { return(new UserColumn(args.Context, args.Definition, args.Configuration, args.Parser)); }