WinRT AppBar изменяется в контексте (или игнорирует щелчок правой кнопкой мыши)?

Я портирую настольное приложение WPF на WinRT, и у меня возникла небольшая проблема.

У меня был ItemsControl, и у меня было контекстное меню для каждого элемента для удаления / редактирования элемента.

Мне сказали, что PopupMenu не подходят для WinRT и мне следует использовать AppBar.

Я думаю, что делаю что-то не так или неправильно это понял.

Я подумал, что могу поместить эти параметры в AppBar, и когда я выбираю элемент, всплываю на панели и щелкаю там, где мне нужно.

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

Итак, могу ли я изменить макет AppBar в разных контекстах (потому что кажется, что Microsoft хочет, чтобы мы использовали AppBar в качестве контекстного меню без возможностей контекста) или показывать его только тогда, когда я хочу, через код?

Было бы хорошо иметь TopAppBar с некоторыми опциями для всего приложения и BottomAppBar только для контекстного меню элемента ListView.

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


person Jesus Rodriguez    schedule 24.11.2012    source источник


Ответы (1)


Вы правильно об этом думаете. AppBar - это место, куда вы должны поместить все ваши второстепенные команды и команды, основанные на выборе.

Рекомендации здесь и здесь предлагаем расположить их следующим образом:

  • Команды навигации должны быть в TopAppBar
  • Команды, относящиеся к выделению, должны находиться слева от BottomAppBar.
  • Остальные команды, относящиеся к странице, должны быть справа от BottomAppBar

Контекстные команды должны отображаться только тогда, когда выбран соответствующий элемент для этой команды. Для этого вам следует установить Visibility из этих команд соответственно. Также AppBar должен открываться автоматически при выборе элемента с контекстными командами в нем. Вы можете сделать это программно, установив его свойство IsOpen. Вы также должны установить его в липкий режим с помощью свойства IsSticky.

Если вы используете MVVM, вы можете привязать свои свойства модели просмотра ко всем свойствам Button и AppBar, упомянутым выше.

В WinRT XAML Toolkit есть элемент управления CustomAppBar. Я сам еще не использовал его, но у него есть несколько дополнительных функций, которые могут оказаться полезными в вашем случае.

person Damir Arh    schedule 25.11.2012