如何最大化UWP窗口(不是全屏)

时间:2016-02-06 22:33:22

标签: uwp

如何使用C#在UWP项目(不是全屏!)中最大化窗口?我尝试使用窗口边界作为参数的方法TryResizeView,但没有任何反应。

由于

3 个答案:

答案 0 :(得分:2)

此时UWP无法做到这一点。所以,我无法让你最大化,但我可以让你非常接近:

var av = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
var di = Windows.Graphics.Display.DisplayInformation.GetForCurrentView();
var bounds = av.VisibleBounds;
var factor = di.RawPixelsPerViewPixel;
var size = new Windows.Foundation.Size(bounds.Width * factor, bounds.Height * factor);
size.Height -= 100;
size.Width -= 100;
av.TryResizeView(size);

基本上,减去100(允许任务)。这在大多数情况下都有效,但如果没有真正的屏幕边界测量,我认为这是我们现在能做的最好的。对不起,我不能给你更多。 TaskBar大小(和位置)是变量。

  

这是在http://aka.ms/template10https://github.com/Windows-XAML/Template10/blob/master/Template10%20(Library)/Utils/MonitorUtils.cs#L58

中实施的

祝你好运!

答案 1 :(得分:0)

这个答案对我不起作用。我将其修改为,,,,现在它可以正常工作。

var av = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
        var di = Windows.Graphics.Display.DisplayInformation.GetForCurrentView();
        var bounds = av.VisibleBounds;
        var factor = di.RawPixelsPerViewPixel;
        Size size = new Size(di.ScreenWidthInRawPixels, di.ScreenHeightInRawPixels);
        size.Height -= 100;
        size.Width -= 100;
        av.TryResizeView(size);

答案 2 :(得分:0)

这是不涉及手动调整大小的解决方案。它与单击最大化按钮具有相同的作用。即使这些调整大小的解决方案过去一直有效,但它们似乎现在(运行于1909年)似乎还没有。

用于最大化和最小化活动窗口的Windows系统键盘快捷方式分别是WinKey +向上箭头,WinKey +向下箭头。您的UWP应用可以使用InputInjector模拟自身的击键。

首先,您必须在应用清单中将InputInjector启用为受限功能。

<Package
    ...
    xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
    IgnorableNamespaces="... rescap">
...
<Capabilities>
    <rescap:Capability Name="inputInjectionBrokered"/>
</Capabilities>
</Package>

然后您可以使用以下内容:

using Windows.UI.Input.Preview.Injection;

public static void MaximizeCurrentWindow()
{
    var inputInjector = InputInjector.TryCreate();

    var winKeyDown = new InjectedInputKeyboardInfo
    {
        VirtualKey = (ushort)VirtualKey.LeftWindows
    };

    var upArrowKeyDown = new InjectedInputKeyboardInfo
    {
        VirtualKey = (ushort)VirtualKey.Up
    };

    var winKeyUp = new InjectedInputKeyboardInfo
    {
        VirtualKey = (ushort)VirtualKey.LeftWindows,
        KeyOptions = InjectedInputKeyOptions.KeyUp
    };

    var upArrowKeyUp = new InjectedInputKeyboardInfo
    {
        VirtualKey = (ushort)VirtualKey.Up,
        KeyOptions = InjectedInputKeyOptions.KeyUp
    };

    InjectedInputKeyboardInfo[] macro = { winKeyDown, upArrowKeyDown, winKeyUp, upArrowKeyUp};
    inputInjector.InjectKeyboardInput(macro);
}