Windows 8.1:WinJS:appbar默认不会打开/显示?

时间:2014-01-09 12:18:47

标签: winjs windows-8.1

我正在使用Windows 8.1应用程序,在数据输入页面上,我希望appBar默认打开或可见,因为它包含保存数据的选项。

http://msdn.microsoft.com/en-us/library/windows/apps/br229676.aspx

我查看了上面的链接并按以下方式尝试了show方法:

标记:

<div id="appbarCommands" data-win-control="WinJS.UI.AppBar" data-win-options="{sticky: 'true'}">
    <button data-win-control="WinJS.UI.AppBarCommand"
            data-win-options="{id:'cmdSaveCustomer', icon:'save', section:'global'}"
            data-win-res="{winControl: {label:'CRM_contactHistory_appBar_SaveLabel', tooltip:'CRM_contactHisory_appBar_SaveToolTip'}}"></button>
</div>

JS代码:

(function () {
        "use strict";

    WinJS.UI.Pages.define("/pages/CRM/customerDetails/contacts/contactHistory/contactHistory.html", {

        ready: function (element, options) {

            WinJS.UI.processAll().done(function () {

                setAppBarState(document.getElementById("appbarCommands"));

            });
            WinJS.Resources.processAll()            
        }
    });
})();

function setAppBarState(appBar) {

    appBar.winControl.show();

}

无论出于何种原因,appBar都无法启动。我在appBar示例代码中对它进行了测试,它在那里工作正常,但它在实际解决方案中不起作用。

我想知道是否有人可以对这个问题有所了解?或者可能知道在页面加载时阻止显示appbar的原因?

非常感谢

克里斯

2 个答案:

答案 0 :(得分:1)

在HTML中添加数据获胜选项中的粘性属性:

data-win-options="{ sticky: true }"

然后使用show()应该可以正常工作。我在HTML Appbar控件示例中对此进行了测试,结果正常。

此外,您不需要在ready方法中调用WinJS.UI.processAll - 在加载页面控件时会自动调用processAll。 (WinJS.Resources.processAll也是如此,只是UI.processAll。)

答案 1 :(得分:0)

通过大量的混乱和价值观的变化,我得到了它的工作。事实证明,所有appBars都需要具有唯一ID,无论它们在哪个页面上,否则一个appBars的属性将从之前页面上的其他属性继承。

我已经浏览了应用程序并根据页面名称命名了ID,所有appBars现在都可以正常工作了!

多么神奇!