我正在使用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的原因?
非常感谢
克里斯
答案 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现在都可以正常工作了!
多么神奇!