我目前正在开发一个可在Windows 8.1平板电脑上运行的WPF应用程序,我找不到有关以下问题的任何帖子:
我的应用程序需要全屏显示,因此,我设置了我的观点:
WindowState="Maximized"
WindowStyle="ToolWindow"
好的 - 我的应用程序将以全屏模式显示:
但是,如果我旋转平板电脑,则会分配一个空间,并且应用程序不会全屏显示。
我不希望这种情况发生,应用程序应始终保持全屏。
我试图收听SystemEvents.DisplaySettingsChanged事件并手动设置全屏:
SystemEvents.DisplaySettingsChanged += Current_SizeChanged;
private void Current_SizeChanged(object sender, EventArgs eventArgs)
{
this.WindowStyle = WindowStyle.None;
this.ResizeMode = ResizeMode.NoResize;
this.WindowState = WindowState.Maximized;
this.UpdateLayout();
}
正如你所看到的,我甚至试图更新布局,但仍然没有工作! 奇怪的是,如果您在任何位置启动应用程序但不在正常位置启动应用程序,它将起作用。例如:如果应用程序以纵向模式启动,则旋转不会更改窗口的尺寸,但如果从横向模式开始运行应用程序...则会出现错误。
您可以使用Ctrl + Alt + Arrows调试此问题。
有什么建议吗?
编辑:似乎问题是由键盘引起的。保留区域用于键盘,但我找不到调整大小到全屏的方法。实际宽度,宽度和所需宽度都相同......
Edit2:此错误只能在Windows 8.1上重现
答案 0 :(得分:0)
您可以使用DisplaySettingsChanged
课程的SystemEvents
个事件。这是一个例子 - > How to Detect Screen Rotation
答案 1 :(得分:0)
此错误的工作原理是收听DisplaySettingsChanged并手动将窗口状态设置为正常,并在窗口状态最大化后,如下所示:
SystemEvents.DisplaySettingsChanged += Current_SizeChanged;
private void Current_SizeChanged(object sender, EventArgs eventArgs)
{
this.WindowState = WindowState.Normal;
this.WindowState = WindowState.Maximized;
}
这是由:
引起的 WindowStyle="ToolWindow"
希望微软将解决这个错误(我在MSDN上的WPF线程上提交了错误)。谢谢你的帮助!
答案 2 :(得分:0)
在viewmodel中使用将在Current_SizeChanged方法中设置的属性。然后在此布尔值上放置一个数据触发器,并将RotateTransform 90deg应用于LayoutTransform。