WinUI 3入门过程的各种坑一

本文介绍了如何使用WinUI3进行窗口操作,包括创建新窗口、设置云母或亚克力背景,窗口的最大化、位置和大小调整。通过Scighost库实现了背景特效,利用Vanara.PInvoke.User32进行窗口控制,并展示了去掉窗口顶部白条的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

winUI3 窗口的一些操作


窗口篇:

  1. 创建第二个窗口

实现代码如下:

//c#
private Window _window;

//code

_window = new Window();

_window.Activate();

效果(Windows11深色):

  1. 窗口设置云母或亚克力背景

准备工作:

下载Scighost

项目-管理nuget程序包

搜索Scighost

安装

实现代码如下:

using Scighost.WinUILib.Helpers;//注意要以上操作正确,否则会报错

backdrop = new SystemBackdrop(this);
// 设置云母背景,如果不支持则设置为亚克力背景
backdrop.TrySetMica(fallbackToAcrylic: true);

效果(Windows11深色):

开启时:

未开启:

  1. 窗口最大化等操作

首先安装Vanara.PInvoke.User32(方法同上

实现代码如下:

using Vanara.PInvoke;//注意要以上操作正确,否则会报错

//code

private IntPtr hwnd;
private AppWindow appWindow;

hwnd = WindowNative.GetWindowHandle(this);
WindowId id = Win32Interop.GetWindowIdFromWindow(hwnd);
appWindow = AppWindow.GetFromWindowId(id);
// 窗口最大化
User32.ShowWindow(hwnd, ShowWindowCommand.SW_SHOWMAXIMIZED);

效果:

实现自动最大化。

调整窗口位置和大小:

实现代码如下:

// 调整窗口位置和大小,以屏幕像素为单位
appWindow.MoveAndResize(new RectInt32(_X: 560, _Y: 280, _Width: 800, _Height: 600));

(实际测试可能会有bug,如果在全屏后调用窗口变成方角)

  1. 去掉窗口顶部的白条

实现代码如下:

// MainWindow.xaml.cs
using Microsoft.UI.Xaml;

<!-- MainWindow.xaml -->

<Grid>
    <Border x:Name="AppTitleBar"
            Height="48"
            VerticalAlignment="Top">
        <TextBlock VerticalAlignment="Center" Text="WinUI Desktop" />
    </Border>
</Grid>

<!-- App.xaml -->
<!-- 右上角按键的背景色设置为透明 -->
<StaticResource x:Key="WindowCaptionBackground" ResourceKey="ControlFillColorTransparentBrush" />
<StaticResource x:Key="WindowCaptionBackgroundDisabled" ResourceKey="ControlFillColorTransparentBrush" />

注意上面的文件位置说明(第一行)

App.xaml在这里:

效果(Windows11深色):

同时上文的bug也解决了


参考的一些文章:

Windows UI 库 (WinUI) 3 - Windows apps | Microsoft Learn
WinUI 3 踩坑记 - 随笔分类 - Scighost - 博客园 (cnblogs.com)

<think>好的,我现在要帮用户解决关于JetBrains Rider对WinUI3的支持以及如何在Rider中使用WinUI3的问题。首先,我需要确认用户的需求。用户可能是在开发跨平台桌面应用,并且想使用WinUI3框架,同时偏好使用Rider作为IDE。需要了解Rider是否支持WinUI3项目,以及如何配置和开发。 接下来,我需要回忆相关的知识。WinUI3是微软推出的Windows UI库,用于构建现代Windows应用。而JetBrains Rider是个跨平台的.NET IDE,支持多种框架。根据引用[1]和[2],微软已经将WinUI开源,这可能促进了第三方工具的支持。引用[1]提到Uno Platform支持WinUI3的方式,可能涉及到跨平台开发,但用户的问题集中在Rider和WinUI3的集成,而不是跨平台。 我需要检查Rider的官方文档或更新日志,看看是否有对WinUI3的支持。由于WinUI3相对较新,可能Rider的支持还在完善中。通常,Rider通过支持对应的项目类型(如.csproj文件)和SDK来提供功能。如果WinUI3项目基于.NET Core或.NET 5+,Rider应该能处理,但可能需要额外配置。 另外,用户可能需要安装特定的SDK或模板。比如,Visual Studio有WinUI3项目模板,但Rider可能需要手动配置项目文件或使用插件。需要确认在Rider中是否可以创建WinUI3项目,或者是否需要从VS创建后导入。 还可能涉及调试和设计界面的支持。WinUI3的设计器可能在Rider中不可用,但开发者可以手动编辑XAML。另外,构建和依赖项管理是否正常,NuGet包是否能正确安装。 需要分步骤解答:首先说明Rider对WinUI3的支持现状,然后详细步骤如何在Rider中配置和开发WinUI3应用,包括项目创建、依赖管理、调试等。可能还需要提到已知的限制或问题,比如设计器支持不足,建议结合Visual Studio使用。 最后,生成相关问题,帮助用户进步探索,比如调试技巧、项目配置问题、与其他框架的整合等。</think>关于JetBrains Rider对WinUI3的支持,以下是关键信息整理: ### 1. **当前支持状态** - **基础编译支持**:Rider 2023.3及以上版本已支持WinUI3项目的基本编译和调试功能,但需要手动配置项目文件[^2] - **设计器限制**:目前仍缺少可视化XAML设计器,建议通过实时XAML预览插件或配合Visual Studio使用 - **项目创建**:需先通过Visual Studio生成WinUI3项目模板,再在Rider中打开(截止2024年Q2) ### 2. **配置步骤** ```xml <!-- 手动编辑.csproj文件确保包含 --> <PropertyGroup> <WindowsPackageType>None</WindowsPackageType> <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework> <Platforms>x64;arm64</Platforms> </PropertyGroup> ``` 1. 安装.NET 8 SDK和Windows App SDK 1.5+ 2. 在Visual Studio中创建新项目 » 选择"Blank App, Packaged (WinUI 3 in Desktop)" 3. 用Rider打开解决方案文件 4. 通过NuGet安装Microsoft.Windows.SDK.BuildTools ### 3. **调试配置** ```text 调试配置需设置: - 启动类型:Executable - 目标路径:选择项目目录下\bin\x64\Debug\net8.0-windows10.0.19041.0\win10-x64\App.exe ``` ### 4. **已知问题处理** - **MSBuild报错**:在Rider设置中启用"Experimental MSBuild support" - **资源加载失败**:将XAML文件属性设置为"Page" - **热重载限制**:需安装Rider插件"Hot Reload for WinUI"
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值