C# 如何正确调整应用程序的大小,使其在UWP上可见?(VisibleBundsMode似乎不起作用)

C# 如何正确调整应用程序的大小,使其在UWP上可见?(VisibleBundsMode似乎不起作用),c#,xaml,uwp,windows-runtime,windows-10,C#,Xaml,Uwp,Windows Runtime,Windows 10,我有两个UWP应用程序,在使用Continuum进行测试后,我注意到屏幕底部的操作系统应用程序栏(带有开始按钮的栏)(当然,它可以位于屏幕的4个边缘中的每一个)覆盖了我应用程序的一部分 现在,在调用Window.Current.Activate()之前,我已经在使用ApplicationView.GetForCurrentView().SetDesiredBoundsMode(ApplicationViewBoundsMode.UseVisible),但这似乎并不能解决问题 1)为什么设置Des

我有两个UWP应用程序,在使用Continuum进行测试后,我注意到屏幕底部的操作系统应用程序栏(带有开始按钮的栏)(当然,它可以位于屏幕的4个边缘中的每一个)覆盖了我应用程序的一部分

现在,在调用
Window.Current.Activate()
之前,我已经在使用
ApplicationView.GetForCurrentView().SetDesiredBoundsMode(ApplicationViewBoundsMode.UseVisible)
,但这似乎并不能解决问题

1)为什么设置
DesiredBoundsMode
属性在这里似乎不起作用?
这不应该自动调整窗口大小吗 内容到可见边界(即不包括系统覆盖,如 导航栏或应用程序栏)


我目前在Windows 10移动设备上使用的解决方法是订阅
VisibleBundsChanged
事件,然后手动调整我的
Window.Current.Content
项的边距,以确保它不会在屏幕的覆盖区域后显示任何内容

基本上,我使用
Window.Current.Bounds
属性和
ApplicationView.VisibleBounds
属性来计算应用程序窗口不同边缘上的遮挡区域,并从那里增加边距

2)有没有合适/更好的方法来做到这一点? 我的意思是,我很确定应该使用另一种方法来避免这个问题(考虑到有很多不同的情况,比如连续体、导航栏等,我认为不应该逐个手动处理)


谢谢你的帮助

使用对VisibleBundsChanged事件的订阅。这是我找到的最好的解决方案

        var curr = ApplicationView.GetForCurrentView();
        if (curr.IsFullScreenMode == true)
        {
            ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.FullScreen;
            curr.FullScreenSystemOverlayMode = FullScreenSystemOverlayMode.Minimal;
        }
        else
        {
            ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto;
            curr.FullScreenSystemOverlayMode = FullScreenSystemOverlayMode.Standard;
        }

使用对VisibleBundsChanged事件的订阅。这是我找到的最好的解决方案

        var curr = ApplicationView.GetForCurrentView();
        if (curr.IsFullScreenMode == true)
        {
            ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.FullScreen;
            curr.FullScreenSystemOverlayMode = FullScreenSystemOverlayMode.Minimal;
        }
        else
        {
            ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto;
            curr.FullScreenSystemOverlayMode = FullScreenSystemOverlayMode.Standard;
        }