/// <summary> /// Factories the wizard view model. /// </summary> /// <param name="args">The <see cref="WizardStepsRequestEventArgs{DataTypeModel, Guid, System.Nullable{System.Int32}}"/> instance containing the event data.</param> /// <returns></returns> private object FactoryWizardViewModel(WizardStepsRequestEventArgs <DataTypeModel, Guid, int?> args) { var wizardViewModelType = typeof(DataWizardViewModel <>).MakeGenericType(args.WizardSteps.ContextType); var wizardViewModel = wizardViewModelType.GetConstructor(new Type[0]).Invoke(new object[0]); wizardViewModelType.GetMethod("ProvideSteps").Invoke(wizardViewModel, new[] { args.WizardSteps }); return(wizardViewModel); }
public DataImportWizard() { InitializeComponent(); Loaded += delegate { var eventaggregator = ServiceLocator.Current.GetInstance <IEventAggregator>(); var currentTypeModel = CurrentDataTypeModel(); var currentType = currentTypeModel.Item1; var existingTypeId = currentTypeModel.Item2; var provider = ServiceLocator.Current.GetInstance <IDomainSessionFactoryProvider>(); Guid wingGuid; using (var sess = provider.SessionFactory.OpenStatelessSession()) { wingGuid = sess.Query <Target>() .Join(sess.Query <Wing>(), t => t.Owner.Id, w => w.Id, (t, w) => new { t, w }) .Where(@t1 => @t1.t.Name == currentType.Target.Name) .Select(@t1 => @t1.w.WingGUID).FirstOrDefault(); } //var id = wing.WingGUID; var args = new WizardStepsRequestEventArgs <DataTypeModel, Guid, int?>(currentType, wingGuid, existingTypeId); eventaggregator.GetEvent <WizardStepsRequestEvent <DataTypeModel, Guid, int?> >().Publish(args); if (args.WizardSteps == null) { args.WizardSteps = new DefaultStepCollection(currentType, existingTypeId); } this.DataContext = FactoryWizardViewModel(args); }; Unloaded += delegate { this.DataContext = null; }; DataContextChanged += (o, e) => { var wizard = e.OldValue as IWizardViewModel; if (wizard != null) { wizard.Detach(); } wizard = e.NewValue as IWizardViewModel; if (wizard != null) { wizard.Attach(); } }; }