protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); _cancellationTokenSource = new CancellationTokenSource(); _mophApp = new Common.Com.MophAppProxy(); var pluginFactory = new PluginFactory(); string pluginPath = Environment.CurrentDirectory; var gris5aPluginBulder= pluginFactory.CreatePluginBuilder(string.Format(@"{0}\ViphApp.Gris5a.dll", pluginPath)); var no2PluginBulder = pluginFactory.CreatePluginBuilder(string.Format(@"{0}\ViphApp.No2.dll", pluginPath)); var no3PluginBulder = pluginFactory.CreatePluginBuilder(string.Format(@"{0}\ViphApp.No3.dll", pluginPath)); ObservableCollection<IPluginPhantom> availablePhantoms = new ObservableCollection<IPluginPhantom>() { gris5aPluginBulder.BuildPluginPhantom(_mophApp), no2PluginBulder.BuildPluginPhantom(_mophApp), no3PluginBulder.BuildPluginPhantom(_mophApp)}; var mainViewModel = new UI.MainViewModel(_mophApp, availablePhantoms); var app = new UI.Views.MainWindow(); app.DataContext = mainViewModel; var templ = gris5aPluginBulder.BuildPhantomTemplate(); app.Resources.Add(templ.DataTemplateKey, templ); templ = gris5aPluginBulder.BuildControlTemplate(); app.Resources.Add(templ.DataTemplateKey, templ); templ = no2PluginBulder.BuildPhantomTemplate(); app.Resources.Add(templ.DataTemplateKey, templ); templ = no2PluginBulder.BuildControlTemplate(); app.Resources.Add(templ.DataTemplateKey, templ); templ = no3PluginBulder.BuildPhantomTemplate(); app.Resources.Add(templ.DataTemplateKey, templ); templ = no3PluginBulder.BuildControlTemplate(); app.Resources.Add(templ.DataTemplateKey, templ); app.Closing += mainViewModel.OnClosing; app.Show(); }