设置C#类库项目中可以添加WPF元素
1. 引言
最近在搭建一个WPF的插件框架,需要将WPF界面封装到各个插件类库中。而默认情况下建立的C#类库,是不能添加WPF元素的,这就需要我们手动对项目设置进行一些调整。下面就说说具体的设置过程。
2. 创建WpfLib项目
我们创建一个名称为WpfLib的类库项目,这时鼠标右键项目名称》添加,弹出的菜单如下图:
可以发现,菜单项中并没有关于WPF元素的菜单项(如窗口、页、用户控件、资源字典)。
3. 修改WpfLib.csproj
用记事本打开WpfLib.csproj文件,情形如下:
在其第一个PropertyGroup节点的最后添加一行:
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
此时,WpfLib.csproj的第一个PropertyGroup节点变为:
<PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>e04974de-aa8c-429e-bb72-ac23afca7f9c</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>WpfLib</RootNamespace> <AssemblyName>WpfLib</AssemblyName> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <Deterministic>true</Deterministic> <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> </PropertyGroup>
其中,黄色的那行就是我们上一步添加上去的。此时我们再右键项目名称》添加,弹出的菜单项就发生了变化了:
这说明我们此时就可以添加WPF元素了。我们在项目中添加个Window1,可以成功添加。别急,看看Window1.xaml,
看来我们的工作还没有做完……
4. 添加相关引用
在主程序中添加如下引用:
PresentationCor(4.0.0.0)
PresentationFramework(4.0.0.0)
System.Xaml(4.0.0.0)
WindowBase(4.0.0.0)
此时再看添加的Window1.xaml,发现已经正常了。但莫急,请继续往后看……
5. 修改Assembly.cs
再Assembly.cs中添加一行代码:
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
这行代码的作用是,当WPF寻找控件时,给其指明主题字典(控件样式)在类库中的存储位置。
Over!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具