当前位置: 首页 > news >正文

WPF创建自定义类和控件及打包成dll引用

WPF创建自定义类和控件及打包成dll引用

  • 一、前言
  • 二、创建自定义类和控件并生成dll文件
    • 2.1创建类库项目
    • 2.2创建自定义类和控件
    • 2.3生成dll文件
  • 三、在其他项目中引用
    • 3.1添加dll文件引用
    • 3.2cs文件中引用命名空间
    • 3.3XAML文件中引用命名空间

一、前言

出于一些代码复用的需求,会将一些常用的基础类及控件放在一个单独项目中,然后打包成dll文件,在其他项目中引用这个dll文件就可以使用这些类和控件,这种做法可以提高编程效率,降低代码量,增强项目的可维护性

二、创建自定义类和控件并生成dll文件

2.1创建类库项目

创建类库项目,在VS2019中选择新建项目,然后选择C#语言、windows平台,在搜索框中输入类库,如下图所示:
在这里插入图片描述
此时会出现多个项目模板供选择,要根据项目的.NET框架而不是根据WPF或WinForms框架进行选择,例如项目的框架是.NET Framework框架,那么就应该选择图中第四个模板:类库(.NET Framework),不能选择第二个模板:WPF类库。

以选择第四个模板为例进行下一步操作,下一步需要选择.NET Framework版本,如下图所示,如果选择的版本高于后续引用dll文件的项目版本,可能会导致报错,所以应选择尽可能低的版本。
在这里插入图片描述

2.2创建自定义类和控件

创建自定义类和控件没有特别需要注意的地方,选中上一节创建的项目名称,鼠标右键选择添加,然后选择类或用户控件即可,如下图所示:
在这里插入图片描述

2.3生成dll文件

选中上一节创建的项目名称,鼠标右键点击生成或重新生成,即在项目文件夹的bin/Debug或bin/Release文件夹下生成与项目同名的dll文件,即为目标dll文件。

三、在其他项目中引用

3.1添加dll文件引用

在其他项目中引用首先需要添加dll文件引用。选中项目的引用,鼠标右键选择添加引用,点击浏览,选择dll文件所在路径,确定,即添加完成。

3.2cs文件中引用命名空间

需要在项目的cs文件中引用命名空间,命名空间与dll项目名同名,例如名为MyClassLibrary,则代码如下;

using MyClassLibrary;  // 引用类库中的命名空间namespace MyProject
{public partial class MainWindow{public MainWindow(){InitializeComponent();}}
}

3.3XAML文件中引用命名空间

当需要在项目中调用自定义控件时,需要在XAML文件中引用命名空间,如果是仅调用自定义类则不需要此步。代码如下:

<Window x:Class="AnotherProject.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:localMy="clr-namespace:MyClassLibrary;assembly=MyClassLibrary" Title="MainWindow" Height="350" Width="525"></Window>
http://www.lryc.cn/news/539741.html

相关文章:

  • Zookeeper(54)如何使用Zookeeper的命令行工具?
  • 一周学会Flask3 Python Web开发-http响应状态码
  • 【数据挖掘】
  • 位操作符 练习
  • 解决Python升级导致PySpark任务异常方案
  • Linux中线程创建,线程退出,线程接合
  • 机器视觉检测中,2D面阵相机和线扫相机的区别
  • LeetCode 热题 100_N 皇后 (62_51_困难_C++)(递归(回溯))
  • Winform(C#) 项目保存页面
  • 【LeetCode: LCR 126. 斐波那契数 + 动态规划】
  • OSPF(开放路径最短优先)
  • JAVA EE初阶 - 预备知识(四)
  • 如何解决服务器端口被攻击:全面防护与快速响应
  • golang panic原理
  • scratch猜年龄互动小游戏 2024年12月scratch四级真题 中国电子学会 图形化编程 scratch四级真题和答案解析
  • 【Elasticsearch】查询规则_query_rules
  • Git备忘录(三)
  • 用户的声音 | 文档结构化信息提取方案测评:LLM、开源模型部署与云端API,谁是合适选择?
  • vite调试node_modules下面插件
  • ES12 weakRefs的用法和使用场景
  • 【Python】集合set详细讲解(语法、操作、集合运算、性能、使用场景)
  • 网络安全大数据架构 网络安全之数据安全
  • (前端基础)CSS(一)
  • Redis数据类型全景解析:从底层编码到应用反模式
  • (蓝桥杯——10. 小郑做志愿者)洛斯里克城志愿者问题详解
  • TypeScript跟js,es6这些的区别
  • flink-cdc同步数据到doris中
  • Kubernetes:EKS 中 Istio Ingress Gateway 负载均衡器配置及常见问题解析
  • Golang教程
  • AI 百炼成神:线性回归,预测房价