2013-04-03 5 views
1

В приложении WP у меня есть древовидный список, где пользователь может видеть категории и элементы.WP tree-like navigation navigation

Если пользователь нажмет элемент -> Я перейду к странице позиции.

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

Как я знаю, я не могу запускать несколько экземпляров одного Page.

Я мог бы показать внутренние категории по текущему экземпляру этой страницы с просто меняющимся содержанием ListBox, но таким образом я получил 2 проблемы:

  1. На заднем нажатии кнопки мне нужно, чтобы показать предыдущий ListBox, так что мне нужно чтобы сохранить все ранее открытые списки в чем-то вроде Stack
  2. Я хочу показать анимацию навигации по страницам для пользователя (для обратного нажатия клавиши), чтобы он увидел, что он идет глубже в списке деревьев или что он возвращается к предыдущему состоянию.

Возможно, некоторые из вас уже что-то сделали, не могли бы вы дать мне какие-либо советы?

ответ

1

У вас может быть несколько экземпляров одной и той же страницы.

Предполагая, что каждая категория имеет уникальный идентификатор, вы просто переходите к странице и предоставляете параметр ID в строке запроса. Зарезервируйте один ID (например, 0) для самых последних данных.

Итак, ваша страница категории будет первоначально называлось как этот

NavigationService.Navigate("MyCategoriesPage?categoryId=0"); 

в методе OnNavigatedTo вы разобрать CategoryId и читать данные, основанные на Id от вашего внутреннего интерфейса или хранения.

Когда пользователь нажимает на категории, вы ориентируетесь на основе категории ид на ту же страницу, например .:

NavigationService.Navigate("MyCategoriesPage?categoryId=12"); 

Windows Phone недоговаривает стек, поэтому навигация на задней кнопке будет обрабатываться. Единственное, что вы должны иметь в виду, это то, что приложение может быть захоронено, если пользователь деактивирует и реактивирует приложение. В этом случае данные списка не будут сохранены. Чтобы справиться с этим убедитесь, что вы будете следовать стандартной схеме в методе OnNavigatedTo:

if (!_isInitialized) 
{ 
    int categoryId = int.Parse(NavigationContext.QueryString["categoryId"]); 
    ReadData(categoryId); 
    _isInitialized = true; 
} 
+0

Что интересно, я' попробовать это на работе, благодаря –

+0

отлично работает, спасибо большое! –

 Смежные вопросы

  • Нет связанных вопросов^_^