WPF 自定义控件库

news/2025/10/27 16:40:30/文章来源:https://www.cnblogs.com/haoweiwei/p/19169528

一、使用场景

  • 开发自定义控件库时,向外部暴露可复用的样式、模板、画笔等资源。
  • 多模块应用中,共享通用资源(如主题样式)。
  • 需要避免资源键命名冲突的场景。

二 ,程序

image

 1.静态的后台代码 资源键

// MyControlLibrary/ResourceKeys.cs
using System.Windows;namespace MyControlLibrary;public static class ResourceKeys
{// 按钮样式资源键public static ComponentResourceKey CustomButtonStyleKey =>new ComponentResourceKey(typeof(ResourceKeys), "CustomButtonStyle");// 文本框样式资源键public static ComponentResourceKey CustomTextBoxStyleKey =>new ComponentResourceKey(typeof(ResourceKeys), "CustomTextBoxStyle");// 主题色画笔资源键public static ComponentResourceKey ThemeBrushKey =>new ComponentResourceKey(typeof(ResourceKeys), "ThemeBrush");
}

2.前台代码

<!-- MyControlLibrary/Themes/Generic.xaml -->
<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:MyControlLibrary"><SolidColorBrush x:Key="{x:Static local:ResourceKeys.ThemeBrushKey}" Color="#FF2196F3"/><Style x:Key="{x:Static local:ResourceKeys.CustomButtonStyleKey}" TargetType="Button"><Setter Property="Background" Value="{StaticResource {x:Static local:ResourceKeys.ThemeBrushKey}}"/><Setter Property="Foreground" Value="White"/><Setter Property="Padding" Value="12,6"/><Setter Property="FontSize" Value="14"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><Border Background="{TemplateBinding Background}" CornerRadius="4" Padding="{TemplateBinding Padding}"SnapsToDevicePixels="True"><ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/></Border></ControlTemplate></Setter.Value></Setter></Style><Style x:Key="{x:Static local:ResourceKeys.CustomTextBoxStyleKey}" TargetType="TextBox"><Setter Property="BorderBrush" Value="{StaticResource {x:Static local:ResourceKeys.ThemeBrushKey}}"/><Setter Property="BorderThickness" Value="2"/><Setter Property="Padding" Value="8"/><Setter Property="FontSize" Value="14"/></Style>
</ResourceDictionary>

3.下面是引用上面的项目,在依赖项中引用一下

App.xaml

<Application x:Class="WpfApp.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfApp"StartupUri="MainWindow.xaml"><Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><!-- 合并控件库的资源字典(Pack URI格式) --><ResourceDictionary Source="/MyControlLibrary;component/Themes/Generic.xaml"/></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>
</Application>

 

MainWindow.xaml

<!-- WpfApp/MainWindow.xaml -->
<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:lib="clr-namespace:MyControlLibrary;assembly=MyControlLibrary"mc:Ignorable="d"Title=".NET 8 ComponentResourceKey 示例" Height="350" Width="500"><StackPanel Margin="20" ><TextBlock FontSize="16" FontWeight="Bold" Text="使用ComponentResourceKey的资源示例"/><!-- 使用自定义按钮样式 --><Button Content="自定义按钮" Style="{StaticResource {x:Static lib:ResourceKeys.CustomButtonStyleKey}}"/><!-- 使用自定义文本框样式 --><TextBox Text="自定义文本框" Style="{StaticResource {x:Static lib:ResourceKeys.CustomTextBoxStyleKey}}"/><!-- 使用主题色画笔 --><Border Height="60" Background="{StaticResource {x:Static lib:ResourceKeys.ThemeBrushKey}}"><TextBlock Text="主题色背景" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/></Border></StackPanel>
</Window>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/947871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025质量可靠的义乌刺绣工厂推荐榜

2025质量可靠的义乌刺绣工厂推荐下。在义乌及周边区域,刺绣工厂数量众多,而质量可靠是企业选择合作方的核心考量因素。 Top1:浦江县俊贤刺绣有限公司 推荐程度:★★★★★ 浦江县俊贤刺绣有限公司虽位于浦江,但与…

c# 使用 jwt

基于 oauth2.0 协议, 具体原理可以参考:https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.htmlpublic class JWTHelper{private const string salt = "123";//盐//获得jwt令牌public sta…

2025义乌做刺绣的厂家推荐榜单

2025义乌做刺绣的厂家推荐下。义乌及周边区域作为纺织服饰配套产业集聚地,刺绣加工领域企业数量众多,涵盖传统手绣、机械刺绣等不同类型,产品可适配服装、家居装饰、礼品等多个应用场景。 Top1:浦江县俊贤刺绣有限…

2025 年液压旋转接头,高温蒸汽旋转接头,通水旋转接头厂家最新推荐,精准检测与稳定性能深度解析

引言 液压、高温蒸汽及通水旋转接头作为工业流体传输的核心部件,其密封可靠性、工况适配性直接决定生产连续性与能源效率。据行业专项测评数据显示,优质接头可降低设备停机率 37%,减少流体损耗达 45%,而劣质产品导…

Linux基本命令篇 —— date命令

Linux基本命令篇 —— date命令Linux基本命令篇 —— date命令 https://blog.csdn.net/2302_80871796/article/details/148979465网站:http://shibowl.topgithub:https://github.com/hanbinjxnc博客园:https://www.…

2025 年连铸机旋转接头,埋入式旋转接头,球体摆动旋转接头,造纸机旋转接头厂家最新推荐,精准检测与稳定性能深度解析

引言 连铸机、埋入式、球体摆动及造纸机专用旋转接头作为工业流体传输的核心部件,其性能直接关系到冶金、造纸等行业的生产连续性与成本控制。据行业协会 2025 年专项测评数据显示,优质旋转接头可使设备停机维修频次…

CorelDRAW的shell扩展ShellXP.dll导致资源管理器explorer.exe卡死/冻结/无响应/挂起

CorelDRAW的shell扩展ShellXP.dll导致资源管理器explorer.exe卡死/冻结/无响应/挂起环境:系统:Windows 10 x64 CorelDRAW:2019 x64故障表现:偶尔启动进入桌面后任务栏很快卡死,连托盘区图标都没出来几个,鼠标移上…

nef怎么转换成jpg格式你还不会?分享4个实用技巧

你用单反拍下的精彩瞬间,大多都静静地躺在存储卡里,以NEF格式保存着原始的美。但这种专业格式在分享时却常让人头疼——如何快速分享到社交网络?别急,这就为你推荐4款好用的NEF转JPG宝藏工具,不仅转换画质有保障,…

2025 年非标旋转接头,异形旋转接头,钢铁厂旋转接头厂家最新推荐,聚焦高端定制需求与全案交付能力

引言 在钢铁、冶金等工业领域,非标旋转接头、异形旋转接头及钢铁厂专用旋转接头作为核心流体传输部件,其定制精度与工况适配性直接决定生产连续性与安全性。然而市场上多数产品存在定制响应慢、极端工况耐受差等问题…

故障处理:ORA-02298: cannot validate (CTG.FK_CTG_LOGS_INT_201306) – parent keys not found

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。故障处理:O…

2025年上海家电展会展台搭建服务商权威推荐榜单:展台搭建会展服务/会展展台装修设计/展台设计装修源头公司精选

上海会展产业年产值已突破600亿元,其中家电展览会展台搭建市场需求增速达18%,专业化服务成为展会成功的关键因素。 据2025年上海会展行业协会统计数据显示,上海全年举办各类家电相关展会超过120场,参展企业数量突破…

2025 年矿车生产,井下矿车,底侧卸式矿车厂家最新推荐,产能、专利、环保三维数据透视

引言 2025 年全球矿用卡车需求量预计突破 12,000 台,井下矿车与底侧卸式矿车作为核心运输装备,其性能直接影响矿山开采效率与安全。为破解市场选型难题,本次测评联合行业权威机构,基于产能规模、专利技术、环保认证…

macro出pin

set terms [dbGet [dbGet top.insts.cell.name JLFLS064K09DG -p2].pgInstTerms.name VPP -v -p1] set n 0 foreach term $terms {set inst [dbGet $term.inst]set lrects [dbGet $term.term.pins.layerShapeShapes.sh…

2025 年定制矿车,大型矿车,固定式矿车厂家最新推荐,产能、专利、环保三维数据透视

引言 随着矿山开采向大型化、智能化转型,定制矿车、大型矿车及固定式矿车的性能与合规性成为企业核心需求。本次榜单基于矿山设备行业协会 2025 年度专项测评数据生成,测评覆盖全国 38 家源头厂家,采用 "产能 …

DP1312多协议高性能读卡芯片支持A/B/Felaca/18092智能门锁读卡器模拟卡兼容PN512 - 动能世纪

特性简介DP1312EA是一款应用广泛的非接触读卡器芯片 ,集成了在 13.56MHz 下的多种非接触通信方式和协议 ,具有很高的技术集成度。其读写器模式能够支持 ISO/IEC 14443A、ISO/IEC 14443B 标准以及 FeliCa 规范,同时也…

2025 年矿用平板车,重型平板车,履带平板车,矿山平板车厂家最新推荐,产能、专利、环保三维数据透视!

引言 矿山平板车作为物料转运核心设备,其性能直接关联作业效率与安全。当前市场品牌繁杂,采购方常因信息不对称陷入选择困境。本次推荐基于 2025 年 10 月最新行业测评,联合专业检测机构参照 MT/T 1052-2007《重型平…

醒图电脑版下载与安装教程(2025最新版)

想在电脑上体验高质量修图?本文带来 **醒图电脑版下载与安装教程**,详细介绍从下载、安装到功能使用的全过程。支持 Windows 10/11 系统,无需模拟器即可运行。还包含 AI 智能美颜、专业调色、滤镜特效与常见问题解决…

2025 年 10 月翻斗式矿车,侧翻矿车,1 吨矿车,运输矿车厂家最新推荐,产能、专利、环保三维数据透视

引言 随着矿山行业电动化转型加速,翻斗式、侧翻式及 1 吨级运输矿车的性能与合规性需求持续攀升。本次测评基于恒州诚思 2025 年专项调研数据,联合矿用设备检测机构开展权威评估,涵盖 32 家源头厂家的核心产品。测评…

读书笔记:告别数据冗余!Oracle引用分区让父子表管理如此简单

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

谷歌翻译 100 遍《我常常追忆过去》

谷歌翻译 50 遍:我经常想起过去。 我梦想的美好生活持续了很长时间。切,吃,吃,享受。 根据车型年份的不同,存在一些差异。云很厚,风很大。我永远不会忘记我一生中的悲伤事件,但我的大部分记忆都被时间的蹂躏所分…