AppBarButton случайным образом срабатывает после того, как приложение скомпилировано для выпуска.

Я разрабатываю новое приложение с VS 2013 для Windows Phone 8.1 (WinRT) и получаю отчаяние, которое иногда работает, а иногда не работает. Мне нужно N раз скомпилировать один и тот же проект, чтобы этот элемент работал. Это мой код.

XAML:

<Page.BottomAppBar>
    <CommandBar x:Name="appBar">
        <AppBarButton x:Name="btnNew" Icon="Add" IsCompact="False" Label="new result" Click="btnNew_Click"/>
        <AppBarButton x:Name="btnShare" IsCompact="False" Label="share" Click="btnShare_Click">
            <AppBarButton.Icon>
                <BitmapIcon UriSource="Assets/AppBar/share.png"/>
            </AppBarButton.Icon>
        </AppBarButton>
        <CommandBar.SecondaryCommands>
            <AppBarButton x:Name="menuPersonal" Label="profile" Click="menuPersonal_Click"/>
            <AppBarButton x:Name="menuTips" Label="tips" Click="menuTips_Click"/>
            <AppBarButton x:Name="menuHelp" Label="help" Click="menuHelp_Click"/>
            <AppBarButton x:Name="menuAbout" Label="about us" Click="menuAbout_Click"/>
        </CommandBar.SecondaryCommands>
    </CommandBar>
</Page.BottomAppBar>

С#:

private void menuTips_Click(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(Tips));
}

private void menuPersonal_Click(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(Personal));
}

private void btnShare_Click(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(Share), txtLast.Text);
}

private void btnNew_Click(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(OcrResult));
}

private void menuHelp_Click(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(Help));
}

private void menuAbout_Click(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(About));
}

Проблема возникает ТОЛЬКО в меню Профиль.

Когда это не работает, VS показывает мне такое сообщение после того, как я нажал кнопку.

Поток 0xb08 завершился с кодом 259 (0x103).

Поток 0x1b0 завершился с кодом 259 (0x103).

Что я уже пробовал:

  • Изменено имя класса, который мне нужно загрузить.
  • Пересоздал рамку.
  • Перемещено местоположение предмета.
  • Изменено название функции.
  • Создал одну функцию для всех опций (не имеет значения, если я добавлю точку останова, я не могу знать, почему она не работает).
  • Пробовал Tapped Event (та же проблема).
  • Добавлено несколько перехватов попыток везде.

Уточню, что эта проблема бывает даже на другом форуме, где я звоню на тот же Фрейм и там тоже не открывается.

Даже любая точка останова не работает, когда приложение выдает эту ошибку. Я хотел бы знать, экспериментировал ли кто-нибудь с этой проблемой, и если кто-то пережил это, возможно, кто-то мог бы так любезно дать мне представление о том, как это исправить.

Спасибо за ваши ценные знания и время.


person Federico Navarrete    schedule 28.02.2015    source источник
comment
А другие кнопки работают - навигация по страницам удалась? Можно ли в режиме отладки проверить, вызывается ли конструктор страницы Personal? Кроме того, вызывается ли событие frame.NavigationFailed?   -  person Romasz    schedule 28.02.2015
comment
Все кнопки работают, кроме этой, иногда работают все, но когда кто-то не работает, это просто так. Другой кадр, когда он не работает, никогда не открывается, а меню просто закрывается, как будто кода нет.   -  person Federico Navarrete    schedule 28.02.2015
comment
Как выглядит ваша страница Profile? Когда вы переходите с помощью первой кнопки на страницу Помощь вместо Профиль — все работает нормально?   -  person Romasz    schedule 28.02.2015
comment
Да все кнопки работают и иногда при компиляции другая.   -  person Federico Navarrete    schedule 28.02.2015
comment
Я не уверен, но вполне вероятно, что проблема на вашей странице Profile — можете ли вы показать ее код?   -  person Romasz    schedule 28.02.2015
comment
Я вернусь через полчаса и поделюсь этим :), спасибо, но, как я уже говорил вам, когда приложение выдает эту ошибку, не имеет значения, добавлю ли я точку останова в кнопку, это не работает. и когда он работает, он работает в точке останова.   -  person Federico Navarrete    schedule 28.02.2015


Ответы (2)


Вы уверены, что нет проблем ни в конструкторе, ни в событии ONNavigatedTo на целевой странице? Я знаю, это звучит безумно, но попробуйте поместить Frame.Navigate в блок диспетчера, например: this.Frame.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(()=> Frame.Navigate(typeof(SomePage))));

даже если это

не нужно вызывать в потоке пользовательского интерфейса...

person jkulhanek    schedule 28.02.2015