2014-09-26 2 views
2

У меня есть один AppBar, объявленный в default.html для использования во всем приложении.Как скрыть панель приложений в приложении Windows Phone 8.1 (WinJS)?

На некоторых страницах мне нужно показать панель приложений, а в некоторых из них мне нужно скрыть AppBar.

До сих пор мои усилия по поиску методов скрыть и показать AppBar встретили тупик.

Документация по MSDN говорит:

AppBar.hide method : Hides the app bar on Windows and the secondary command menu on Windows Phone.

Таким образом, этот метод только скрывает AppBar для Windows, а не для проекта Windows Phone.

Я также попытался дать display:none как стиль CSS, ни в коем случае.

Любая помощь будет оценена :)

+0

Я не уверен насчет Winjs, но в C# вы можете скрыть AppBar, когда вы устанавливаете 'BottomAppBar = null'. Может быть, вы можете попробовать что-то подобное. – Romasz

+0

Да, я знаю, как это сделать на C#. Но мое требование для WinJS. Я полностью зациклен на том, как делать такую ​​простую вещь. –

ответ

4

AppBar.Hide скрывает дополнительную командную строку на Windows Phone, а не в главном AppBar. Если вы хотите, чтобы весь AppBar ушел, это не правильное свойство.

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

Я просто изменил AppBar-commands.js файл в HTML AppBar control sample следующим образом и AppBar шкуры и показывает, как я нажимаю скрыть и показать кнопки:

// These functions are used by the scenario to show and hide elements 
function doShowItems() { 
    document.getElementById('commandsAppBar').winControl.disabled = false; 

    //document.getElementById('commandsAppBar').winControl.showCommands([cmdFavorite, cmdCamera]); 
    document.getElementById('scenarioShowButtons').disabled = true; 
    document.getElementById('scenarioHideButtons').disabled = false; 
} 

function doHideItems() { 
    document.getElementById('commandsAppBar').winControl.disabled = true; 
    //document.getElementById('commandsAppBar').winControl.hideCommands([cmdFavorite, cmdCamera]); 
    document.getElementById('scenarioHideButtons').disabled = true; 
    document.getElementById('scenarioShowButtons').disabled = false; 
} 

Я также подтвердил с одной страницы навигации модель, перемещающаяся между двумя страницами. Если вы не видите, что панель скрывается и отображается, когда она отключена и включена, убедитесь, что вы вызываете код для отключения/включения панели приложений. Функция готовности PageControl не может быть вызвана при возврате на кешированную страницу.

+0

Nice Answer! Работает!!! Решение было настолько простым, но мы не могли понять это. –

+0

'Функция готовности PageControl не может быть вызвана при возвращении на кешированную страницу' есть ли что-нибудь написанное на эту тему? У меня возникают проблемы, перемещающиеся взад и вперед через мой стек, и я искал дополнительную информацию о внутренних навигациях? –

2

Вы должны будете сделать это с C#, Вы можете просто просто напечатать .. (Если AppBar называется ApplicationBar)

ApplicationBar.Visibility = Visibility.Collapsed; 

Этот немедленно скроет AppBar! Если вы хотите, чтобы ваша HTML-страница выполняла это действие, это будет очень сложно.

Приветствия

+0

Спасибо, но я хотел это для WinJS. Элемент управления AppBar отличается от WinJS, и вышеуказанный фрагмент кода не будет работать для элемента управления WinJS. –

0

Я думаю, вы можете попробовать ниже шага в вашем коде.

  1. Добавить слушателя событий для AppBar beforeshow
  2. В коде, прежде чем показать Проверить состояние с конкретной страницы имя , как: если (WinJS.Navigation.location.match («test.html»))
  3. По вашему усмотрению вы можете использовать Disable свою панель.

Все лучшее .. !!

+0

Устанавливает свойство 'disabled' AppBar' true', похоже, скрывает его, но установка его в 'false' снова не отображается. –

+0

Итак, как только я установил свойство «отключено» AppBar, я никогда не могу включить его для любой другой страницы в приложении. –

+0

Можно отключить свойство disable. Если вы вывели способ выгрузки страницы, просто напишите disable = false .. и согласно вашей потребности в готовой функции сделайте true или false. –