Должен сказать, что я использую версию 4. *. Все будет ссылаться на эту версию.
Ваш Bootstrapper отражает мое собственное, поэтому он должен работать правильно.
Вот несколько отличий:
protected override void OnStartup(object sender, StartupEventArgs e)
{
DisplayRootViewFor<IShell>()
.GetAwaiter()
.GetResult();
}
^ это чтобы избежать асинхронности c void.
private SimpleContainer Container;
^ Я запускаю контейнер из переопределения конфигурации. Пример:
protected override void Configure()
{
Container = new SimpleContainer();
//FrameWork
Container.Singleton<IWindowManager, WindowManager>();
Container.Singleton<IEventAggregator, EventAggregator>();
...Rest of Your Models & Services.
}
Переопределение для StartupEvent происходит из пространства имен System. Windows Вы правильно отметили, я бы проверил браузер объектов, чтобы убедиться, что он существует в вашем проекте.
Внутри файла App.xaml.cs Должно быть только следующее:
public partial class App : Application
{
public App()
{
InitializeComponent();
}
}
_container.Instance(_container);
^ Не уверен, почему вы это делаете, вы называете себя.
ваш App.xaml - это то место, откуда вы вызываете загрузчик.
private IEventAggregator _events;
private SimpleContainer _container;
^ Они должны быть доступны только для чтения.
ActivateItem(_container.GetInstance<LoginViewModel>());
Это должно быть введено, если вы не можете по какой-то причине, тогда используйте Io C. Вы не должны вызывать контейнер напрямую.