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>

0 ответов

Другие вопросы по тегам