2

我正在使用 WinUI 3 prerelease 0.5(项目重聚)创建一个演示应用程序。

我想从 C# 托管代码中最大化、最小化和恢复窗口状态。有没有可用的例子?

4

2 回答 2

1

显然,此时使用托管代码是不可能的。PInvoke 是当前唯一的选项。我使用了 PInvoke.User32 nuget 包。

于 2021-03-31T06:28:28.863 回答
0

这是我基于 PInvoke.User32 nuget 包的实现。

使用 Window 参数的版本

    public void MaximizeWindow(Window window)
    {
        var windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(window);

        PInvoke.User32.ShowWindow(windowHandle, PInvoke.User32.WindowShowStyle.SW_MAXIMIZE);
    }

使用扩展方法的版本

前面的代码也可以转换为Window类的扩展方法,所以我可以this.Maximize()从内部调用Window

public static class WindowExtensions
{
    public static void Maximize(this Window window)
    {
        var windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(window);

        PInvoke.User32.ShowWindow(windowHandle, PInvoke.User32.WindowShowStyle.SW_MAXIMIZE);
    }
}

Window 派生类中的用法:

this.最大化();


最小化和恢复

上面示例中使用的“PInvoke.User32.WindowShowStyle”定义还包含 and 的常量SW_MINIMIZESW_RESTORE但我没有对此进行测试。

于 2022-02-09T13:12:20.143 回答