locked
Использование AppBar для нескольких элементов RRS feed

  • Вопрос

  • В Windows 8 в меню "Пуск" при выделение плиток правой кнопкой мыши в нижнем баре появляются кнопки с действиями для всех выделенных элементов
    Как реализовать данную функцию? (Основная проблема заключается в том, что пытаясь выделить второй элемент, при нажатии правой кнопкой AppBar автоматически закрывается)
    25 февраля 2014 г. 13:35

Ответы

  • Тогда нужно знать, как Вы делаете выделение. Потому как если использовать GridView/ListView, то АппБар не закрывается при нажатии правой кнопки мыши.

    В принципе можете Засовывать Ваши UserControl"ы в GridView. Только панелью задайте ему VirtualizingStackPanel с ориентацией Horizontal.

    • Помечено в качестве ответа kvart714 28 февраля 2014 г. 2:26
    26 февраля 2014 г. 16:42

Все ответы

  • Вам нужно писать attached property, которое будет цепляться к Вашему списочному контролу и отслеживать выделения. Что бы аппбар не закрывался, Ваш обработчик должен сетить AppBar.IsSticky = true.

    Attached property будет полезен для того, что бы юзать его на любой странице. Конечно, Вы можете это всё сделать в Code behind и не парится :)

    Просто по SelectionChanged или как там событие называется по измененю выделения, держите аппбар поднятым и пристыкованным. Когда все выделения убираются - снимается пристыковку и скрываете его.


    25 февраля 2014 г. 13:52
  • AppBar.IsSticky = true не помогает - нажатие правой кнопки все равно приводит к закрытию
    Пробовал держать его открытым с помощью AppBar.IsOpen = true при каждой попытке закрытия, но в таком случае AppBar начинает судорожно дергаться в припадке вверх-вниз не зная закрываться ему или нет :)
    может есть какой нибудь другой способ намертво его закрепить?
    25 февраля 2014 г. 14:25
  • То есть, когда Вы в GridView/ListView пытаетесь выделить айтем, то у Вас скрывается аппбар?

    Или когда просто клацаете по пустому месту правой кнопкой?

    25 февраля 2014 г. 14:54
  • У меня в StackPanel лежат UserControl-ы, они то и должны выделяться

    25 февраля 2014 г. 16:24
  • Тогда нужно знать, как Вы делаете выделение. Потому как если использовать GridView/ListView, то АппБар не закрывается при нажатии правой кнопки мыши.

    В принципе можете Засовывать Ваши UserControl"ы в GridView. Только панелью задайте ему VirtualizingStackPanel с ориентацией Horizontal.

    • Помечено в качестве ответа kvart714 28 февраля 2014 г. 2:26
    26 февраля 2014 г. 16:42
  • попробовал так и сделать, но в итоге все только усложнилось, приходиться переписывать всякие ItemTemplate, ItemSelectorStyle и т. д.
    проще помоему уже сделать свой AppBar с блэкджеком)
    и все таки, ни ужели нет ни одного варианта просто закрепить стандартный аппбар?
    27 февраля 2014 г. 12:39
  • Нет. Только свойства IsSticky и IsOpen.

    Вам вообще нужно переопределить только ItemsContainerStyle, потому что в нем стили для выделений лежат. ItemsTemplate незачем переопделять, ибо у Вас по сути статический список UserControl"ов.

    27 февраля 2014 г. 14:51
  • Неа :)
    у меня контролы можно добавлять, удалять, изменять, перемещать мышкой - менять друг с другом, сложно все в общем....
    Ладн, спасибо за помощь, теперь хоть есть варианты, будем пробовать :)

    28 февраля 2014 г. 2:26
  • Что мешает сделать то же самое с помощью GridView? :)
    28 февраля 2014 г. 8:03