Как добавить пункт меню в панель приложений в нужный индекс?

Я добавляю пункт меню в панель приложений, используя этот код

ApplicationBar.MenuItems.Insert(0, refreshMenu);

У меня есть 2 других элемента, добавленных из XAML.
Но добавленный элемент меню добавляется в конец списка и становится последним элементом меню, а не первым.

Есть ли способ добавить пункт меню в нужный индекс, не удаляя все элементы и добавляя в нужном порядке?

EDIT: Когда я удаляю пункт меню из первого индекса, он удаляет меню обновления, поэтому проблема заключается в отображении пунктов меню.

Спасибо


person Samvel Siradeghyan    schedule 20.05.2012    source источник
comment
Когда вы добавляете пункты меню? Попробуйте сделать это в событии Loaded.   -  person Richard Szalay    schedule 20.05.2012
comment
Я добавляю пункт меню при нажатии одной из кнопок панели приложений, поэтому я не могу сделать это в событии Loaded   -  person Samvel Siradeghyan    schedule 20.05.2012
comment
Вау, это действительно странная парадигма пользовательского интерфейса. Вы уверены, что это удобно для пользователя? Представьте это в Windows; когда вы нажимаете на элемент меню, в меню добавляются другие элементы .... не уверен в этом.   -  person Magnus Johansson    schedule 20.05.2012
comment
Да, я уверен, что это удобно :)) Я думаю, вы упустили одну вещь. 1 Пункт меню добавляется, когда вы нажимаете кнопку, а не меню. У меня есть страница, где я покажу некоторые данные. По умолчанию оно пустое. После того, как пользователь выбирает кнопку на панели приложений, данные добавляются на страницу. А также добавляется пункт меню обновления. Конечно, я мог бы отключить меню обновления, но в моем случае его добавление более удобно для пользователя, чем его включение/выключение.   -  person Samvel Siradeghyan    schedule 20.05.2012
comment
Я бы сказал, что добавление этого менее удобно для пользователя. Если он есть, но отключен, вы, по крайней мере, знаете, что он есть. Если его нет один раз, но есть в следующий раз, у вас нет возможности узнать, что он добавился. Кроме того, что-то вроде обновления всегда можно включить, иногда оно просто ничего не делает.   -  person Shawn Kendrot    schedule 20.05.2012
comment
Спасибо за ваши заметки, но обновляю страницу, где единственное сообщение, в котором говорится, что данные отсутствуют. Пожалуйста, выберите данные идиотизм. Некорректная и неинтуитивная работа панели приложений WP7 — большая проблема, чем дизайн моего приложения.   -  person Samvel Siradeghyan    schedule 20.05.2012
comment
@SamvelSiradeghyan - В этом случае ваша кнопка обновления будет отключена. Неправильная и неинтуитивная работа панели приложений WP7 является большей проблемой, чем дизайн моего приложения ‹- тогда просто смиритесь с этим и перестаньте с этим бороться.   -  person Richard Szalay    schedule 21.05.2012


Ответы (2)


Похоже, это может быть ошибка в фреймворке (это не очень распространенный сценарий). Я бы рекомендовал один из следующих (в порядке рекомендации):

  • Держите элемент там все время, но отключайте его, когда он не нужен (согласно комментарию Шона). Встроенные приложения уже делают это.
  • Замените весь ApplicationBar на другой экземпляр, содержащий элемент (это поддерживаемый сценарий).
  • Удалите все элементы и повторно добавьте их в нужном вам порядке.
person Richard Szalay    schedule 20.05.2012
comment
Это то, что я делаю сейчас. Похоже это баг WP7 - person Samvel Siradeghyan; 20.05.2012
comment
@SamvelSiradeghyan - я обновил свой ответ, добавив еще несколько вариантов - person Richard Szalay; 23.05.2012
comment
спасибо за ответ, я уже изменил код, чтобы добавить все элементы из кода. - person Samvel Siradeghyan; 23.05.2012
comment
да, @Richard Szalay, я создаю пункты меню из кода, я очищаю пункты меню и каждый раз добавляю новые пункты с правильным порядком - person Samvel Siradeghyan; 24.05.2012

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

person Samvel Siradeghyan    schedule 28.05.2012