c# - UWP应用如何全屏显示状态栏?

标签 c# windows uwp windows-10-universal

更新 1:更新了图片和更多详细信息:

更新2:更改标题以更好地反射(reflect)问题,因为导航栏无法像状态栏一样手动控制

好吧,我想在应用程序上覆盖状态栏并隐藏导航栏。
我通过使用以下方法实现了这一点:(这一切都在 app.xaml.cs 内)

    public override async Task OnInitializeAsync(IActivatedEventArgs args)
    {

        //this allows nav bar and status bar to overlay the app
        ApplicationView.GetForCurrentView().SetDesiredBoundsMode(ApplicationViewBoundsMode.UseCoreWindow);

        //this hides nav bar and status bar
        ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
    {

所以如果我注释掉

ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); 

该应用程序仍然类似于全屏,但现在导航栏仅覆盖该应用程序。而不是全屏行为(我注意到),它只是常规的导航栏,因此需要全屏。但是,当全屏显示时,无论我在应用程序中的哪个位置调用以下代码,都永远不会显示状态栏。

var statusBar = StatusBar.GetForCurrentView();
await statusBar.ShowAsync();

图片:

全屏行:App/Code

没有全屏行:App/Code

所以我需要一种方法来允许状态栏全屏显示。

这个应用程序是 git 上的一个开源项目“Pokemon Go Client for WM”。我想实现我上面尝试的目标,不仅是为了这个应用程序,也是为了我的教育。如果您有兴趣,可以在这里找到该项目Pokemon Go-UWP for WM

最佳答案

在 Windows Mobile 上,全屏应用程序没有状态栏和导航栏。并且在全屏模式下无法显示状态栏。正如@Raymond 的建议,您可以绘制自己的状态栏,例如在应用程序的右上角添加电池电量和日期时间信息。但这可能并不容易实现。

如您所见,没有全屏模式,

the app is still something like full screen but now the nav bar just overlays the app.

所以我认为你也可以隐藏导航栏来实现你想要的。虽然,我们无法以编程方式隐藏导航栏,但用户可以从屏幕底部向上滑动来隐藏/显示它。您可以在应用中添加一些提示来提示用户隐藏导航栏。
Screenshot

或者您可以将所需的边界模式设置为UseVisible,如下所示,将窗口的内容布置在可见区域内。

ApplicationView.GetForCurrentView().SetDesiredBoundsMode(ApplicationViewBoundsMode.UseVisible);

在此模式下,应用程序不会占用状态栏或导航栏被遮挡的区域。
Screenshot

关于c# - UWP应用如何全屏显示状态栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39070418/

相关文章:

C# - 让 ManagementObjectSearcher 输出到文本框

UWP 中的 C# XML 序列化

c# - 您如何在应用程序域之间传递经过身份验证的 session

c# - DateTime ToLocalTime 失败

windows - 保持 Node 运行的基本 Windows 脚本

c++ - 如何检查在我的程序运行的控制台上设置了什么字符编码?

mvvm - 使用 ReactiveUI 通过 ToggleSwitch 控制(启动/停止)IObservable

c# - 处置或终止 DispatcherTimer 对象和访问 DispatcherTimer 对象

c# - 为多个消费者读取一次流

c# - 如何捕获 'end of paper roll' 事件?