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

时间:2014-09-26 03:15:47

标签: windows-8.1 windows-phone-8.1 winjs

我在default.html中声明了一个AppBar,可以在整个应用程序中使用。

在某些页面上我需要显示App Bar,而在某些页面中我需要隐藏AppBar。

到目前为止,我努力寻找隐藏和展示AppBar的方法已经走到了尽头。

MSDN上的文档说:

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

因此,该方法仅隐藏AppBar for Windows而不是Windows Phone项目。

我也试过将display:none作为CSS样式,但没效果。

任何帮助将不胜感激:)

3 个答案:

答案 0 :(得分:4)

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;
}

我还确认了在两页之间导航的单页导航模型。如果您没有看到应用栏隐藏并在禁用和启用时显示,请确保您正在调用代码来禁用/启用应用栏。返回缓存页面时,可能无法调用PageControl的ready函数。

答案 1 :(得分:2)

您必须使用C#进行操作,您只需输入..(如果您的appbar名为 ApplicationBar

ApplicationBar.Visibility = Visibility.Collapsed;

这会立即隐藏AppBar!如果您希望HTML页面执行此操作,则会非常复杂。

干杯

答案 2 :(得分:0)

我认为您可以在代码中尝试以下步骤。

  1. 为appbar beforeshow
  2. 添加事件监听器
  3. 在演出前的代码中检查具有特定页面名称的条件 喜欢:if(WinJS.Navigation.location.match(" test.html"))
  4. 根据您的情况,您可以Disable您的appbar。
  5. 一切顺利...... !!