当前位置: 首页 > 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>

相关文章:

  • 2.10 Playground Chat提示工程实战:从交互调试到企业级应用的全链路指南
  • 驱动开发、移植(最后的说法有误,以后会修正)
  • 【Apache Paimon】-- 16 -- 利用 paimon-flink-action 同步 kafka 数据到 hive paimon 表中
  • Linux环境下安装mkcert
  • Python--正则表达式
  • SAP-ABAP:SAP中REPORT程序和online程序的区别对比
  • Modbus通讯协议
  • YOLOv5-Seg 完全指南:从训练到后处理
  • 阅读论文笔记《Efficient Estimation of Word Representations in Vector Space》
  • YOLOV8的学习记录(二) yolo8的几个内置模型简介
  • RabbitMQ介绍以及基本使用
  • 小米平板怎么和电脑共享屏幕
  • c++--静态联编--动态联编
  • 动态库与静态库:深入解析与应用
  • CAS单点登录(第7版)12.密码管理
  • CANopen 基础
  • 13 责任链(Chain of Responsibility)模式
  • 数据结构与算法-哈希表
  • resultMap 标签
  • 变相提高大模型上下文长度-RAG文档压缩-2.带早停机制的map-refine
  • 超燃!走过莫斯科街头的“中国排面”
  • 41年轮回,从洛杉矶奔向洛杉矶,李宁故地重游再出发
  • 马上评|比起奇葩论文,更可怕的是“水刊”灰产
  • 山大齐鲁医院通报“子宫肌瘤论文现男性患者”:存在学术不端
  • 戴紫薇评《不像说母语者》丨后殖民语境下的母语追寻
  • 今天全国铁路、公路进入返程高峰,这些路段时段通行压力大