所选项目的Windows 8 appbar(如启动屏幕)

时间:2013-03-11 09:07:57

标签: windows-8 microsoft-metro appbar

我想在我的应用程序中实现的功能与Windows在启动屏幕上的功能相同。选择项目时,请打开appbar并显示更多项目。如果您在未选择任何内容时打开te appbar,请不要显示这些项目。

到目前为止这么好,它的工作方式就像我希望的那样。但是有些问题我无法解决。当您在启动屏幕上选择项目时,右键单击屏幕上的任何位置时都无法关闭te appbar。您必须取消选择该项目。

我无法弄清楚如何禁用右键单击以关闭appbar。因为那时我处于一个状态,我有一个选定的项目,但没有appbar。我不希望......

提前致谢!

3 个答案:

答案 0 :(得分:1)

有一个名为IsSticky

的属性

这可以用来阻止你的appbar崩溃。

您拥有的另一个选择是挂钩Closed事件并强制重新打开。

基于您提供的屏幕,也就是Metro UI :)我会说创建一个只托管其他图块的页面。 我在我的一个应用程序中做了类似的事情,看一看 http://apps.microsoft.com/windows/en-gb/app/cineworld/7adfde16-33c3-4b51-b758-00366325288d

查看Coding4FunCallisto

答案 1 :(得分:1)

设置AppBar属性 IsSticky =“true”并在GridView / ListView上处理事件 RightTapped ,并在事件处理程序集中设置 e.Handled =真;
这将阻止右键单击/滑动路由事件到达页面,并且不会关闭AppBar。

答案 2 :(得分:0)

您可以覆盖appbar的hide()功能,并将其替换为以下内容:

appBar.hide = function () {
        /// <signature helpKeyword="WinJS.UI.AppBar.hide">
        /// <summary locid="WinJS.UI.AppBar.hide">
        /// Hides the AppBar, if visible, regardless of other state
        /// </summary>
        /// </signature>
        // Just wrap the private one
        var listView = document.getElementById("yourListView").winControl;
        var count = listView.selection.count();

        if(count <1)
            this._hide();
}

这不是一个很好的解决方法,但它就像一个魅力:)