locked
Как получить доступ к кнопке "Назад" из XAML-разметки в UWP-приложении? RRS feed

  • Вопрос

  • Вот, например, программно я могу задать ей видимость вот так:

    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;

    А как бы мне то же самое делать в XAML-разметке, чтобы в адаптивных триггерах задавать видимость кнопки при разных размерах окна?

    13 ноября 2015 г. 11:25

Ответы

  • Даже если подобное есть в приложении от MS, я все равно считаю глупым лишать пользователя возможности перейти назад, если окно имеет маленькую ширину.

    Это имело смысл в приложениях 8, 8.1, так как там в прикрепленном режиме вы делали акцент на данных. Приложения UWP от этой философии отказались. Проверил на примере приложения "Календарь" из Windows 10. Там кнопка назад видна при любом размере и это мне не ка не мешает.

    Но, если я вас все же не убедил, то отвечу на вопрос. строка заголовка (вместе с кнопкой) является системной частью окна и не является частью XAML разметки, поэтому получить доступ из XAML по всей видимости нельзя. Для этого нужно использовать соответствующие API из кода.


    VB.Net - WPF, UWP

    • Помечено в качестве ответа Eugene Razmanov 14 ноября 2015 г. 14:03
    14 ноября 2015 г. 13:37

Все ответы

  • Я не уверен, что такое возможно, но зато уверен, что такое делать не нужно.

    Кнопка назад сама определяет необходимо ли ей отображаться в приложении. На телефоне и планшете она не будет отображаться, а на ПК в стандартном режиме будет.

    Вывод: не нужно переусердствовать и решать уже решенные задачи.


    VB.Net - WPF, UWP

    14 ноября 2015 г. 9:25
  • Я не уверен, что такое возможно, но зато уверен, что такое делать не нужно.

    Кнопка назад сама определяет необходимо ли ей отображаться в приложении. На телефоне и планшете она не будет отображаться, а на ПК в стандартном режиме будет.

    Вывод: не нужно переусердствовать и решать уже решенные задачи.


    VB.Net - WPF, UWP


    Я делаю своё приложение по образу и подобию универсального Outlook'а. Если поиграться шириной окна при открытом письме в десктопной операционке, то можно видеть, как кнопка то видна, то не видна. Вот мне бы то же самое сделать. И хочется сделать это именно в XAML-разметке, ибо все состояния окна заданы у меня именно там. Не хочется это "раскидывать" между XAML- и C#-кодом.
    14 ноября 2015 г. 12:17
  • Даже если подобное есть в приложении от MS, я все равно считаю глупым лишать пользователя возможности перейти назад, если окно имеет маленькую ширину.

    Это имело смысл в приложениях 8, 8.1, так как там в прикрепленном режиме вы делали акцент на данных. Приложения UWP от этой философии отказались. Проверил на примере приложения "Календарь" из Windows 10. Там кнопка назад видна при любом размере и это мне не ка не мешает.

    Но, если я вас все же не убедил, то отвечу на вопрос. строка заголовка (вместе с кнопкой) является системной частью окна и не является частью XAML разметки, поэтому получить доступ из XAML по всей видимости нельзя. Для этого нужно использовать соответствующие API из кода.


    VB.Net - WPF, UWP

    • Помечено в качестве ответа Eugene Razmanov 14 ноября 2015 г. 14:03
    14 ноября 2015 г. 13:37
  • > Даже если подобное есть в приложении от MS, я все равно считаю глупым лишать пользователя возможности перейти назад, если окно имеет маленькую ширину.

    Нет, я не собираюсь делать именно это. Но при открытом письме/документе/сообщении кнопка "Назад" действительно бывает не всегда нужной в зависимости от ширины экрана. Да, если содержимое письма развёрнуто во всё окно приложения, то тут она безусловно нужна. Но если помимо открытого содержимого письма отображаются ещё список писем и список папок, то в кнопке нет особой надобности, ибо нет смысла реализовывать в подобных приложениях историю навигации, как, например, в браузерах. Потому кнопки "Назад" в подобном состоянии окна, как я описал выше, и нет ни в одном известном мне мессенджере и почтовике.

    > Для этого нужно использовать соответствующие API из кода.

    Жаль. Ну ладно, будем выкручиваться так :)


    14 ноября 2015 г. 14:03
  • Но если помимо открытого содержимого письма отображаются ещё список писем и список папок, то в кнопке нет особой надобности, ибо нет смысла реализовывать в подобных приложениях историю навигации, как, например, в браузерах. Потому кнопки "Назад" в подобном состоянии окна, как я описал выше, и нет ни в одном известном мне мессенджере и почтовике.


    Тогда не очень хорошая идея реализовывать многостраничное окно. Можно же все сделать в одной странице, как работает приложение "Почта" Windows 10

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

    Я настаиваю на своей версии, так как по заверению сотрудников MS  к приложениям UWP относятся более строго в плане реализации интерфейса. И какие то нестандартные решения могут лишить вас многих привилегий, например попадание в "Списки" или "ТОП".


    VB.Net - WPF, UWP

    14 ноября 2015 г. 15:49