1

Я создаю приложение Windows Phone 8.1, и одна из функций - голосовые команды. Поток, как это:Caliburn IoC не инициализирован

  1. жму кнопку поиска и произнесите команду «MyAppName сделать что-то»
  2. В App.xaml.cs У меня есть функция OnActivated, где я проверяю, чтобы увидеть, какие страницы из мое приложение может обрабатывать команду, и я перехожу к этой странице.

Если приложение открыто, когда я даю команду, или даже если она находится в фоновом режиме, тогда все в порядке. Однако, если приложение полностью закрыто, когда оно активируется голосовой командой, я получаю исключение, говоря, что IoC не инициализируется. В OnActivated функции Я пытаюсь ориентироваться, используя что-то вроде этого:

//IPageNavigationService is a wrapper for INavigationService from Caliburn 
var navigationService = IoC.Get<IPageNavigationService>(); 

Я также стараюсь перемещаться с помощью:

RootFrame.Navigate(typeof(MyView), args); 

но RootFrame равна нулю.

Есть ли способ, с помощью которого я могу вручную инициализировать IoC для Caliburn? Я заметил, что он не инициализируется, если приложение запускается голосовыми командами.

ответ

1
protected override async void OnActivated(IActivatedEventArgs args) 
{ 
    if (args.Kind == ActivationKind.VoiceCommand) 
    { 
       Initialize(); 
       PrepareApplication(); 
       PrepareViewFirst(); 
       var service = IoC.Get<IService>(); 
       DisplayRootView(typeof(MyView)); 
    } 
} 

Я исправил проблему, вручную инициализируя Caliburn.Micro. Вы можете прочитать более подробную информацию. here

0

Поскольку приложение, отличное от Silverlight, больше похоже на WinRT, как правило, сконфигурировано соответствующим образом для службы INavigationService;

private static INavigationService _navservice; // declared at top of class 

protected override void Configure(){ 
    //viewmodel inclusions into container here... 

    PrepareViewFirst(); 
} 

protected override void PrepareViewFirst(Frame rootFrame) 
{ 
    _navservice = container.RegisterNavigationService(rootFrame); 
} 
Смежные вопросы