【问题标题】:Windows 8 appbar on selected item (like startup screen)所选项目上的 Windows 8 应用栏(如启动屏幕)
【发布时间】:2013-02-26 09:35:01
【问题描述】:

我希望在我的应用程序中实现的功能与 Windows 在其启动屏幕上的功能相同。当您选择一个项目时,打开应用栏并显示更多项目。当您在不选择任何内容时仅打开 te appbar 时,请不要显示这些项目。

到目前为止一切都很好,它的工作方式就像我想要的那样。但是有一些问题我无法解决。当您在启动屏幕上选择一个项目时,右键单击屏幕上的任何位置都无法关闭应用栏。您必须取消选择该项目。

我只是不知道如何禁用右键单击以关闭应用栏。因为那时我处于有一个选定项目但没有应用程序栏的状态。我不想这样……

提前致谢!

【问题讨论】:

  • 用户可以在你的场景中只选择一个项目还是多个项目?

标签: windows-8 microsoft-metro appbar


【解决方案1】:

有一个属性叫IsSticky

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

您的另一个选择是连接到Closed 事件并强制它重新打开。

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

看看Coding4FunCallisto

【讨论】:

  • 这并不完全如我所愿。当用户右键单击鼠标按钮时,应用栏将消失。 IsSticky 仅确保当用户按下鼠标左键时应用栏不会关闭。
  • 另一种选择是使用关闭事件并重新打开。没有其他选择。至少不使用应用栏
  • 知道windows是如何在启动屏幕中实现它的吗?如果在我的用例中效果更好,我愿意使用另一个组件...
  • 我不知道你指的是什么......启动屏幕?您的意思的屏幕截图实际上可能对我有所帮助..今天处于非常缓慢的状态:|
  • 这是我所指的启动屏幕的screenshot。如果您用鼠标右键按下某个磁贴,则会出现应用栏,并且在您取消选择该磁贴之前无法移除该应用栏。
【解决方案2】:

设置 AppBar 属性 IsSticky="true" 并在您的 GridView/ListView 和事件处理程序集 e.Handled = 中处理事件 RightTapped是的;
这将阻止右键单击/滑动路由事件到达 Page,并且不会关闭 AppBar。

【讨论】:

    【解决方案3】:

    您可以覆盖 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();
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多