我想在我的应用程序中实现的与 Windows 在其启动屏幕上所做的相同。当您选择一个项目时,打开应用栏并显示更多项目。当您在未选择任何内容时仅打开 te appbar 时,请不要显示这些项目。
到目前为止一切都很好,它就像我想要的那样工作。但是有一些问题我无法解决。当您在启动屏幕上选择一个项目时,右键单击屏幕上的任何位置都无法关闭应用栏。您必须取消选择该项目。
我只是不知道如何禁用右键单击以关闭应用程序栏。因为那时我处于有一个选定项目但没有应用栏的状态。我不想要那个...
提前致谢!
我想在我的应用程序中实现的与 Windows 在其启动屏幕上所做的相同。当您选择一个项目时,打开应用栏并显示更多项目。当您在未选择任何内容时仅打开 te appbar 时,请不要显示这些项目。
到目前为止一切都很好,它就像我想要的那样工作。但是有一些问题我无法解决。当您在启动屏幕上选择一个项目时,右键单击屏幕上的任何位置都无法关闭应用栏。您必须取消选择该项目。
我只是不知道如何禁用右键单击以关闭应用程序栏。因为那时我处于有一个选定项目但没有应用栏的状态。我不想要那个...
提前致谢!
有一个属性叫IsSticky
这可以用来阻止你的 appbar 崩溃。
您拥有的另一个选择是挂钩Closed事件并强制它重新打开。
根据您提供的屏幕,即 Metro UI :) 我会说创建一个仅托管其他磁贴的页面。我在我的一个应用程序中做了类似的事情,看看 http://apps.microsoft.com/windows/en-gb/app/cineworld/7adfde16-33c3-4b51-b758-00366325288d
设置 AppBar 属性IsSticky="true"并在您的 GridView/ListView 上处理事件RightTapped,并在事件处理程序中设置e.Handled = true;
这将阻止右键单击/滑动路由事件到达页面,并且不会关闭 AppBar。
您可以覆盖hide()
appbar 的功能并将其替换为以下内容:
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();
}
这不是一个很好的解决方法,但它就像一个魅力:)