NavigationService является нулевым, когда используется распознавание голоса для перехода между страницами
Проект WPF с Miscrosoft Speech Platform SDK. Я создаю приложение (на данный момент три страницы), чтобы сделать заказ шаг за шагом (последняя страница является сводной страницей).
Все работает нормально, когда я использую кнопки (щелкаемые мышью), чтобы следовать этому порядку, но когда я пытаюсь использовать распознавание речи, это работает нормально только для первой итерации:
Страница 1 -> Страница 2 (хорошо)
Страница 2 -> Страница 3 (хорошо)
Страница 3 -> Страница 1 (хорошо)
Страница 1 -> Страница 2 (NavigationService является нулевым)
Что для меня странно, так это то, что указанная кнопка считается нажатой после распознанного слова, поэтому она должна работать нормально, я полагаю...
MainWindow является NavigationWindow и начинается с Page (ChoosePizza.xaml).
Есть ли у вас идеи, где проблема и как ее решить?
private void Btn_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
Pizza pizza = new Pizza();
pizza = (Pizza)btn.Tag;
OrderList.Add(pizza);
ChooseSize chooseSizePage = new ChooseSize();
NavigationService nav = NavigationService.GetNavigationService(this);
nav.Navigate(chooseSizePage); // exception here, nav is null
}
private static void Sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Confidence >= 0.75)
{
Console.WriteLine("I heard " + e.Result.Text);
foreach (Button button in PizzaButtonsList)
{
if (button.Content.ToString() == e.Result.Text)
{
((SpeechRecognitionEngine)sender)
.RecognizeAsyncCancel();
button.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
}
}
}
}
<NavigationWindow x:Class="PizzaOrder.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PizzaOrder"
mc:Ignorable="d"
Title="Pizza Order" Height="500" Width="500"Source="ChoosePizza.xaml">
</NavigationWindow>