WinUI 3中加载自定义.cur光标文件的替代方案咨询
在WinUI 3中无需Win32Resource加载自定义.cur光标
完全可以不用依赖Win32 .res文件来加载自定义32×32光标,以下是具体实现步骤:
步骤1:将.cur文件设为嵌入资源
- 在Visual Studio中右键你的.cur文件,选择「属性」
- 将「生成操作」设置为「嵌入的资源」
- (或者直接在.csproj中添加配置)
<EmbeddedResource Include="CustomCursor.cur" />
步骤2:从嵌入资源读取并创建光标
利用InputCursor.CreateFromStreamAsync方法,直接从嵌入资源的流中创建光标,示例代码如下:
using System.Reflection; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Input; private async void MainPage_Loaded(object sender, RoutedEventArgs e) { // 获取当前程序集 var assembly = Assembly.GetExecutingAssembly(); // 注意资源名称格式:项目命名空间 + 文件名(如果文件在子文件夹,还要加上文件夹路径) var resourceFullName = "YourWinUIAppNamespace.CustomCursor.cur"; // 获取资源流 using var cursorStream = assembly.GetManifestResourceStream(resourceFullName); if (cursorStream == null) { // 资源不存在的异常处理 return; } // 从流创建光标 var customCursor = await InputCursor.CreateFromStreamAsync(cursorStream); // 给当前页面设置光标 this.Cursor = customCursor; }
关键注意事项
- 资源名称正确性:嵌入资源的全名是「项目默认命名空间」+「文件路径(含文件名)」,如果不确定可以用
assembly.GetManifestResourceNames()打印所有嵌入资源名称来核对。 - 自包含部署兼容:这种方式不需要配置
Win32Resource,完全支持WindowsAppSDKSelfContained模式,不会出现之前的冲突错误。 - 光标尺寸:确保你的.cur文件是32×32尺寸,WinUI 3对光标尺寸有要求,不符合的话可能无法正常显示。
内容的提问来源于stack exchange,提问作者testalino
相关产品推荐
相关产品推荐

