ApplicationBar уничтожается при отмене обратной навигации - PullRequest
1 голос
/ 07 марта 2011

У меня есть страница с «внутренней навигацией».Это означает, что я показываю некоторый список на этой странице, и когда пользователь выбирает элемент, я (загружаю некоторые данные и) снова заполняю этот список.

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

Щелчок работает нормально, но кнопка возврата странная.
Я отменяю событие кнопки возврата и вместо этого запускаю свою историю навигации назад.Так что я все еще на той же странице.НО нажатие кнопки «назад» скрывает панель приложения (хотя я отменяю это событие).И когда я щелкаю его снова и отлаживаю, свойство ApplicationBar имеет значение null.

// this overriden method causes ApplicationBar being hidden (or destroyed)
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
    e.Cancel = true;
    Messenger.Default.Send(...some notification here...); // this runs the internal navigation
    ApplicationBar.IsVisible = true; // this doesn't help and on the second try, it throws NullReferenceException
}

// this method is ok, repopulating is working without any problem
private void GestureListener_Flick(object sender, FlickGestureEventArgs e)
{
    Messenger.Default.Send( ...some notification here... ); // this run exactly same internal navigation
}

Итак, вопрос - как сделать так, чтобы ApplicationBar не был уничтожен / скрыт?Что делает кнопка назад, когда я отменяю навигацию (она должна что-то делать с AppBar)?

1 Ответ

1 голос
/ 13 марта 2011

ОК, это происходит только тогда, когда я использую BindableApplicationBar и его расширения (отсюда maxpaulousky.com). Это происходит потому, что Расширения обрабатывают событие возврата кнопки на самой странице.

Решением было проверить свойство Cancel и уничтожить его, только когда оно ложно (в классе BindableApplicationBar в расширениях).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...