Проблема с HideCommands на панели приложений WP8.1

Я пишу приложение WP8.1, используя WinJS и шаблон навигации в Visual Studio. В моем приложении есть панель приложений, и когда я перехожу на разные страницы, я использую hideCommands / showCommands, чтобы настроить панель приложений с помощью команд, подходящих для данной страницы. Проблема в том, что скрываемые команды не скрываются полностью до того, как будут показаны отображаемые команды. Это создает мгновенное мигание кнопок, которые нужно скрыть.

 var commands = [appbar.winControl.getCommandById("commandA"), appbar.winControl.getCommandById("commandB"), appbar.winControl.getCommandById("commandC")];
 appbar.winControl.hideCommands(commands);
 appbar.winControl.showCommands("commandD");

Любая помощь будет оценена по достоинству.


person agolia    schedule 14.11.2014    source источник
comment
Разве у вас не должно быть отдельной панели команд для каждой страницы? Что произойдет, если вы отключите или даже скроете панель команд, затем добавите / удалите элементы меню, а затем снова включите и отобразите панель команд?   -  person Chubosaurus Software    schedule 14.11.2014
comment
Спасибо за совет, но, к сожалению, когда я добавляю панель приложений на каждую страницу, она не отображается на странице.   -  person agolia    schedule 16.11.2014
comment
Скрытие панели приложений, добавление / удаление кнопок, а затем отображение не имеет никакого эффекта. Кнопки, которые не должны быть видны, видны на мгновение, прежде чем будут скрыты.   -  person agolia    schedule 16.11.2014


Ответы (1)


Со мной случилось то же самое. Раньше я думал, что иметь только один AppBar будет лучше, чем создавать по одному для каждой страницы, поэтому у меня был тот же подход, что и при использовании showOnlyCommands. Это нормально работало в Windows 8 (и 8.1), но определенно не работает должным образом в WinPhone 8.1.

В итоге я разместил разметку AppBar на каждой странице, где мне нужен был AppBar.

<div data-win-control="WinJS.UI.AppBar"></div>

У меня есть код для отображения / скрытия команд из AppBars с использованием метода showOnlyCommands, который с тех пор работал без проблем.

Один совет: showOnlyCommands может получать массив либо идентификаторов команд (в виде строки), либо самих AppBarCommands. Я обнаружил, что последняя работала, как ожидалось. Были небольшие проблемы с идентификаторами

person sebagomez    schedule 14.11.2014
comment
Спасибо за совет, но, к сожалению, когда я добавляю панель приложений на каждую страницу, она не отображается на странице. - person agolia; 16.11.2014
comment
это должно быть связано с другой проблемой (?), этот подход работает как шарм. Хотите поделиться кодом? - person sebagomez; 16.11.2014
comment
‹Body› ‹! - Контент, который будет загружен и отображен. - ›‹ div class = домашняя страница фрагмента ›‹ header aria-label = Роль содержимого заголовка = баннер ›‹/header›‹ section aria-label = Роль основного содержимого = main ›‹/section› ‹/div›‹ данные div- win-control = WinJS.UI.AppBar ›‹/div› ‹/body› - person agolia; 18.11.2014
comment
Но вам не хватает команд msdn.microsoft.com/en-us /library/windows/apps/Hh700497.aspx - person sebagomez; 18.11.2014
comment
Я добавил кнопки, но они все еще не появляются. Я могу получить панель приложений для отображения на моей первой странице, но когда я перехожу на другую страницу, панель приложений для этой страницы кажется скрытой, а при переходе на первую страницу панель приложений, которая была видимой, теперь также скрыта. - person agolia; 18.11.2014
comment
Если вы поделитесь проектом на onedrive, dropbox или чем-то еще, я могу вам помочь - person sebagomez; 18.11.2014