Windows 10 移动版 - 无法隐藏状态栏(上下文中不存在状态栏)
Posted
技术标签:
【中文标题】Windows 10 移动版 - 无法隐藏状态栏(上下文中不存在状态栏)【英文标题】:Windows 10 Mobile - cannot hide status bar (StatusBar doesn't exist in context) 【发布时间】:2015-10-14 04:29:55 【问题描述】:我正在尝试在我的 Windows 10 通用应用程序中隐藏状态栏。在 WP 8.1 中,我使用 StatusBar.GetForCurrentView().HideAsync();
隐藏状态栏,但是这在我当前的项目(Monogame,Win10 UAP)中不起作用 - 我收到“在当前上下文中找不到状态栏”错误(是的,我是使用 Windows.UI.ViewManagement)。
我做错了什么,还是删除了这个删除 StatusBar 的选项?我应该如何在 W10M 中做到这一点?
提前致谢。
【问题讨论】:
【参考方案1】:诀窍是您必须首先添加对 Microsoft Mobile Extension SDK 的引用。 那么代码如下:
StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
await statusBar.HideAsync();
可以通过右键单击通用项目来添加引用。选择“添加参考”。在 Reference Manager 对话框中,选择左侧的“Windows Universal”。选择“Extensions”并勾选“Microsoft Mobile Extension SDK...”。
由于这是一个通用应用程序,它将在每台设备上运行,但该 API 仅在装有 Windows 10 的移动设备(又名手机)上可用。因此,在您实际调用之前,功能检测此 API 在运行时是否可用API。否则会在运行时抛出 TypeLoadException。
使用 Windows.Foundation.Metadata.ApiInformation 命名空间来确定 API 是否可用。 (例如方法 IsTypePresent() 。 我建议在这里使用 typeof 而不是 Strings,例如像这样:
var isStatusBarPresent = ApiInformation.IsTypePresent(typeof(StatusBar).ToString());
在此处了解有关自适应代码的更多信息:https://channel9.msdn.com/Series/A-Developers-Guide-to-Windows-10/08
【讨论】:
这至少不适用于最新版本的 SDK,因为在 .Net Native 编译之后 typeof(StatusBar) 不会像您期望的那样返回文字类型名称。 “typeof(StatusBar).FullName”会是更好的解决方案吗?以上是关于Windows 10 移动版 - 无法隐藏状态栏(上下文中不存在状态栏)的主要内容,如果未能解决你的问题,请参考以下文章