在 UWP 中隐藏状态栏
Hide status bar in UWP
我使用下面的代码来隐藏 UWP 中的状态栏。当我 运行 应用程序在我的计算机上处于开发模式时,状态栏未显示在 windows phone 中。我在 Windows 商店中部署了该应用程序,下载该应用程序后,我看到状态栏出现在我的应用程序中。
这是我的代码:
var isAvailable = Windows.Foundation.Metadata.ApiInformation.IsTypePresent(typeof(StatusBar).ToString());
if (isAvailable)
hideBar();
async void hideBar()
{
StatusBar bar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
await bar.HideAsync();
}
问题是,为什么上面的代码在 windows 商店中不起作用?
此外,我在 windows 商店中为我的应用程序 App link 添加了 link,但是当我在 windows 商店中搜索确切的关键字时,我的应用程序未显示在 windows 商店,但单击 link 会在 window 商店中显示我的应用程序。
谢谢!
检查 Contract
,而不是 StatusBar
类型对我来说很好。
private async Task InitializeUi()
{
// If we have a phone contract, hide the status bar
if (ApiInformation.IsApiContractPresent("Windows.Phone.PhoneContract", 1, 0))
{
var statusBar = StatusBar.GetForCurrentView();
await statusBar.HideAsync();
}
}
您必须使用 FullName
而不是 ToString()
:
...
ApiInformation.IsTypePresent(typeof(StatusBar).FullName);
...
会不会是当您在 Release 中使用 .NET Native 工具链进行编译时,类型信息被丢弃,因此您没有传递您认为传递的字符串?也许您可以尝试对完整的类型名称进行硬编码?
在Windows10中命令是
Window.Current.SetTitleBar(空);
此代码将无法运行,因为在 .Net Native 编译(Store 会编译)之后,typeof(StatusBar).ToString() 将不会 return 文字类型名称如您所愿,但 return 类似于 "EETypeRVA:0x00021968"。请改用文字字符串(您不会重命名 StatusBar,对吗?;)或使用 IsApiContractPresent 或 typeof(StatusBar).FullName(如前所述)。
P.S。同样的问题可以在不发布的情况下重现,只需 运行 使用 Release 配置即可。
我使用下面的代码来隐藏 UWP 中的状态栏。当我 运行 应用程序在我的计算机上处于开发模式时,状态栏未显示在 windows phone 中。我在 Windows 商店中部署了该应用程序,下载该应用程序后,我看到状态栏出现在我的应用程序中。
这是我的代码:
var isAvailable = Windows.Foundation.Metadata.ApiInformation.IsTypePresent(typeof(StatusBar).ToString());
if (isAvailable)
hideBar();
async void hideBar()
{
StatusBar bar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
await bar.HideAsync();
}
问题是,为什么上面的代码在 windows 商店中不起作用? 此外,我在 windows 商店中为我的应用程序 App link 添加了 link,但是当我在 windows 商店中搜索确切的关键字时,我的应用程序未显示在 windows 商店,但单击 link 会在 window 商店中显示我的应用程序。
谢谢!
检查 Contract
,而不是 StatusBar
类型对我来说很好。
private async Task InitializeUi()
{
// If we have a phone contract, hide the status bar
if (ApiInformation.IsApiContractPresent("Windows.Phone.PhoneContract", 1, 0))
{
var statusBar = StatusBar.GetForCurrentView();
await statusBar.HideAsync();
}
}
您必须使用 FullName
而不是 ToString()
:
...
ApiInformation.IsTypePresent(typeof(StatusBar).FullName);
...
会不会是当您在 Release 中使用 .NET Native 工具链进行编译时,类型信息被丢弃,因此您没有传递您认为传递的字符串?也许您可以尝试对完整的类型名称进行硬编码?
在Windows10中命令是 Window.Current.SetTitleBar(空);
此代码将无法运行,因为在 .Net Native 编译(Store 会编译)之后,typeof(StatusBar).ToString() 将不会 return 文字类型名称如您所愿,但 return 类似于 "EETypeRVA:0x00021968"。请改用文字字符串(您不会重命名 StatusBar,对吗?;)或使用 IsApiContractPresent 或 typeof(StatusBar).FullName(如前所述)。 P.S。同样的问题可以在不发布的情况下重现,只需 运行 使用 Release 配置即可。