在以.NET 6为目标的WinForms桌面应用程序中,proj文件中的UseWindowsForms元素设置为True
,并从启动文件Program
生成和调用引导程序ApplicationConfiguration.Initialize();
。
现在我想通过将UseWPF设置为True
来启用WPF。当我这样做并构建时,我在输出日志中得到以下错误
Program.cs(11,13,11,37(:错误CS0103:名称"ApplicationConfiguration"在当前上下文中不存在。
如果我注释掉那一行,应用程序就会构建,我可以从WinForm打开WPF窗口。但是获胜窗体窗口看起来不同,因为它们没有正确初始化,所以我想保留对ApplicationConfiguration.Initialize();
的调用
知道如何将UseWPF设置为True
并仍然使用ApplicationConfiguration.Initialize();
吗?Thx。
复制
- 在VS 2022中创建一个新的Windows窗体项目,目标是.NET 6
- 转到项目属性并选中
Enable WPF for this project
复选框 - 将WPF窗口添加到项目中
- Build
您现在将获得
Program.cs(11,13,11,37(:错误CS0103:名称"ApplicationConfiguration"在当前上下文中不存在。
在输出日志中。(错误列表混乱,可能没有显示任何内容(
项目文件
按照上述步骤,proj文件如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>True</UseWPF>
</PropertyGroup>
</Project>
我遇到了同样的问题,我做了两件事:
- 我在WinForms的GitHub问题上发布了这个问题,它被设置为.NET7里程碑链接->Github WinForm问题
- 我在Winforms(NET6(中的EnableWPF的解决方法代码是将Program.CS文件编辑为下面是:
在Program.CS中注释下面的代码-(将来取消注释并检查.NET Fixes或VS IDE Updates是否修复了该问题(
//ApplicationConfiguration.Initialize();
然后在注释下方添加以下代码
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());