如何隐藏Windows Phone 8.1(WinJS)应用程序中的应用程序栏?

问题描述:

我在default.html中声明了一个单独的AppBar,以便在我的应用程序中使用。如何隐藏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#中,当您设置BottomAppBar = null时,您肯定可以隐藏AppBar。也许你可以尝试类似的东西。 – Romasz 2014-09-28 19:40:14

+0

是的,我知道如何在C#中做到这一点。但我的要求是WinJS。我完全沉迷于如何做这样一件简单的事情。 – 2014-09-29 08:41:04

AppBar.Hide隐藏Windows Phone上的辅助命令栏,而不是主AppBar。如果你想让整个AppBar消失,那么这不是合适的属性。

最简单的方法是在要显示它的页面上声明AppBar,并将它放在不需要的页面上,但是应该可以通过在页面上禁用AppBar来隐藏它你不想要它。

我只是修改了HTML AppBar control sample的appbar,commands.js如下文件和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; 
} 

我也与单页导航证实模型在两页之间导航。如果你没有看到appbar隐藏并显示禁用和启用时,请确保你正在调用代码来禁用/启用appbar。返回到缓存页面时,PageControl的ready函数可能不会被调用。

+0

好的答案!作品!!!解决方案非常简单,但我们无法弄清楚。 – 2014-09-30 20:17:19

+0

'当返回到缓存页面时,可能不会调用PageControl的ready函数'是否有任何关于此主题的内容?我有麻烦在我的堆栈中来回导航,并且正在寻找关于导航内部的更多信息? – 2015-01-13 13:55:48

你必须用C#这样做,你可以简单地只需键入..(如果你的appbar被称为应用程序任务栏

ApplicationBar.Visibility = Visibility.Collapsed; 

这将立即隐藏AppBar!如果你想让你的HTML页面执行这个动作,它会非常复杂。

干杯

+0

谢谢,但我想为WinJS这个。 AppBar控件在WinJS中是不同的,上面的代码段不适用于WinJS控件。 – 2014-09-29 08:39:36

我想你可以试试下面代码中的一步。

  1. 为appbar beforeshow
  2. 添加事件侦听器在之前节目请与特定的页面名称 就像一个条件代码:如果(WinJS.Navigation.location.match( “test.html的”))
  3. 根据你的条件你可以Disable你的appbar。

一切顺利.. !!

+0

将AppBar的'disabled'属性设置为'true'似乎隐藏了它,但将其设置为'false'不会再显示它。 – 2014-09-29 16:55:46

+0

因此,一旦我设置AppBar'禁用'属性,我永远不能启用它的应用程序中的任何其他页面。 – 2014-09-29 16:56:35

+0

可以切换禁用属性。如果你派生页面卸载方法只需写入disable = false ..并根据您的需要准备好功能使真或假.. – 2014-09-30 05:52:28