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

【WPF编程宝典】第6讲:资源

        研究了 WPF 资源系统使得在应用不同部分可以重用相同对象的原理,介绍了如何在代
码和标记中声明资源,如何提取系统资源,以及如何使用类库程序集在应用程序之间共享资源。

1.资源基础

1.1静态资源和动态资源

        区别:静态资源只从资源集合中获取对象一次。根据对象的类型(以及使用对象的方式),对象的任何变化都可能被立即注意到。然而,动态资源在每次需要对象时都会重新从资源集合中查找对象。这意味着可在同一键下放置一个全新对象,而且动态资源会应用该变化。

        通常不需要使用动态资源,作为一般规则,只有在下列情况下才需要使用动态熟悉。不应过度使用动态资源。许多情况下,需要在控件中显示动态内容,而且控件需要随着内容的改变调整自身。对于这种情况,使用数据绑定更合理。

  • 资源具有依赖于系统设置的属性(如当前 Windows 操作系统的颜色或字体)。
  • 准备通过编程方式替换资源对象(例如,实现几类动态皮肤特性)。

1.2非共享资源

        很少使用。使用Shared特性即可。

<ImageBrush x:Key="TileBrush" x:Shared="False"/>

1.3资源的访问

        资源通常可通过xaml访问,也可通过C#代码访问。

<Window.Resources><ImageBrush x:Key="TileBrush" TileMode="Tile"ViewportUnits="Absolute" Viewport="0 0 32 32"ImageSource="/Images/爆炸.png" Opacity="0.3"/></Window.Resources>// 在xaml中使用
<Button Background="{StaticResource TileBrush}" Content="A Tiled Button" Height="30" Width="300" Margin="5" Padding="5" FontWeight="Bold" FontSize="14"/>// 在代码中使用private void btn_Click(object sender, RoutedEventArgs e){Button btn = (Button)sender;ImageBrush myBrush = (ImageBrush)FindResource("TileBrush");btn.Background = myBrush;}

1.4应用程序资源

        查找资源的地方:窗口,控件,容器,App.xaml,用户定义等。通常全局使用的资源可以在App.xaml中定义,只在几个窗口中使用的资源,可考虑在每个窗口中分别定义。充分平衡复杂性和重用性。

2.资源字典

        多个项目之间共享资源,可创建资源字典。资源字典只是Xaml文档,除了存储希望使用的资源外,不做其他任何事情。

2.1创建资源字典

// 需要通过添加→资源字典创建。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><ImageBrush x:Key="TileBrush" TileMode="Tile"ViewportUnits="Absolute" Viewport="0 0 32 32"ImageSource="/Images/爆炸.png" Opacity="0.3"/></ResourceDictionary>

2.2使用资源字典

// 假设有2个资源字典:AppBrushes.xaml和WizardBrushes.xaml<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="AppBrushes.xaml"/><ResourceDictionary Source="WizardBrushes.xaml"/></ResourceDictionary.MergedDictionaries><ImageBrush x:Key="GraphicalBrush1"/><ImageBrush x:Key="GraphicalBrush2"/></ResourceDictionary></Application.Resources>

2.3共享资源

方法1:复制并分发包含资源字典的xaml文件,这种最简单,但不能对版本进行控制。

方法2:将资源字典编译到单独的类库程序集中,并分发组件。

相关文章:

【WPF编程宝典】第6讲:资源

研究了 WPF 资源系统使得在应用不同部分可以重用相同对象的原理&#xff0c;介绍了如何在代 码和标记中声明资源&#xff0c;如何提取系统资源&#xff0c;以及如何使用类库程序集在应用程序之间共享资源。 1.资源基础 1.1静态资源和动态资源 区别&#xff1a;静态资源只从资…...

容器化部署Pig微服务快速开发框架

系统说明 基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC 企业快速开发平台&#xff0c; 同时支持微服务架构和单体架构 提供对 Spring Authorization Server 生产级实践&#xff0c;支持多种安全授权模式 提供对常见容器化方案支持 Kubernetes、Rancher2 、Kubesphere、E…...

Windows编程:图标资源、光标资源、字符串资源、加速键资源、WM_PAINT消息、绘图

承接前文&#xff1a; win32窗口编程windows 开发基础win32-注册窗口类、创建窗口win32-显示窗口、消息循环、消息队列win32-鼠标消息、键盘消息、计时器消息、菜单资源 本文目录 图标资源光标资源WM_SETCURSOR 消息 字符串资源加速键资源WM_PAINT 消息绘图绘图编程绘图基础基…...

【2024 短剧0元轻资产创业风口】做自己的老板,做新媒体的领路人

好省短剧邀请码2Urux1ZoQm(长按复制粘贴即可)大多数好省短剧推广活动都会通过官方渠道发布邀请码。您可以通过关注官方社交媒体账号、订阅电子邮件通知或参与官方网站上的活动,获得邀请码的机会。官方渠道通常会提前公布邀请码的获取方式和条件,您只需按照要求执行即可。好省…...

Docker安装Bitbucket

centos7版本 [rootlocalhost ~]# cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31"…...

FlyMcu串口下载STLINK Utility

一、FlyMcu程序烧录软件 1、可以通过串口给STM32下载程序&#xff0c;如果没有STLINK&#xff0c;就可以用这个软件通过串口下载程序&#xff0c;和STC的51单片机的烧录软件STC-ISP一样&#xff0c;通过串口给单片机下载程序 2、创建串口下载所需要的HEX文件 3、选择串口和波…...

CSS(盒子模型,定位,浮动,扩展)

CSS 盒子模型&#xff1a;外边距&#xff1a;内边距&#xff1a;水平居中&#xff1a; 定位&#xff1a;相对定位&#xff1a;绝对定位&#xff1a;固定定位&#xff1a; 浮动&#xff1a;扩展&#xff1a; 盒子模型&#xff1a; 盒子模型(Box Model) 规定了元素框处理元素内容…...

AIGC如何改变人类生活20240529

AIGC如何改变人类生活 随着人工智能技术的不断发展&#xff0c;人类生活正经历着前所未有的变革。在这个过程中&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;的概念应运而生&#xff0c;它已经在很多领域产生了深远的影响。本文将探讨AIGC如何改变人类生活&#…...

【python】成功解决“TypeError: ‘method’ object is not subscriptable”错误的全面指南

成功解决“TypeError: ‘method’ object is not subscriptable”错误的全面指南 一、引言 在Python编程中&#xff0c;TypeError: method object is not subscriptable错误是一个常见的陷阱&#xff0c;特别是对于初学者来说。这个错误通常意味着你尝试像访问列表、元组、字典…...

若依 Spring Security 短信,扫码登录

1. 修改 LoginBody&#xff0c;添加登录类型字段 Data public class LoginBody {/*** 用户名*/private String username;/*** 用户密码*/private String password;/*** 验证码*/private String code;/*** 唯一标识*/private String uuid;/*** 登录类型*/private String logi…...

Web 网页性能优化

Web 网页性能及性能优化 一、Web 性能 Web 性能是 Web 开发的一个重要方面&#xff0c;侧重于网页加载速度以及对用户输入的响应速度 通过优化网站来改善性能&#xff0c;可以在为用户提供更好的体验 网页性能既广泛又非常深入 1. 为什么性能这么重要&#xff1f; 1. 性能…...

JDBC-MySQL

JDBC-MySQL 1.JDBC 操作步骤1.1 DriverManager1.2.Connection对象1.3 Statement1.4 PreparedStatement 1.JDBC 操作步骤 public void quickStart() throws ClassNotFoundException, SQLException {//1、注册驱动 &#xff08;确认要使用哪个数据库&#xff09;Class.forName(&…...

MySQL经典练习50题(上)(解析版)

所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验&#xff08;无广告且清爽&#xff09;&#xff0c;请访问本篇笔记 MySQL经典练习50题&#xff08;上&#xff09; 创建数据库和表 -- 建 表 -- 学 生 表 CREATE TABLE Student( s_id VARCHAR(20), s_name VARCHAR(2…...

每日一题33:数据统计之广告效果

一、每日一题 返回结果示例如下&#xff1a; 示例 1&#xff1a; 输入&#xff1a; Ads 表: ------------------------- | ad_id | user_id | action | ------------------------- | 1 | 1 | Clicked | | 2 | 2 | Clicked | | 3 | 3 | Viewed…...

52、有边数限制的最短路

有边数限制的最短路 题目描述 给定一个n个点m条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c; 边权可能为负数。 请你求出从1号点到n号点的最多经过k条边的最短距离&#xff0c;如果无法从1号点走到n号点&#xff0c;输出impossible。 注意&#xff1a;图中可…...

Spring boot实现基于注解的aop面向切面编程

Spring boot实现基于注解的aop面向切面编程 背景 从最开始使用Spring&#xff0c;AOP和IOC的理念就深入我心。正好&#xff0c;我需要写一个基于注解的AOP&#xff0c;被这个注解修饰的参数和属性&#xff0c;就会被拿到参数并校验参数。 一&#xff0c;引入依赖 当前sprin…...

MySQL之查询性能优化(四)

查询性能优化 MySQL客户端/服务器通信协议 一般来说&#xff0c;不需要去理解MySQL通信协议的内部实现细节&#xff0c;只需要大致理解通信协议是如何工作的。MySQL客户端和服务器之间的通信协议是"半双工"的&#xff0c;这意味着&#xff0c;在任何一个时刻&#…...

定时任务详解

文章目录 定时任务详解JDK自带第三方任务调度框架java有哪些定时任务的框架为什么需要定时任务定时任务扫表的方案有什么缺点Quartzxxl-jobxxl-job详解 elastic-job 定时任务详解 在定时任务中&#xff0c;操作系统或应用程序会利用计时器或定时器来定期检查当前时间是否达到了…...

OnlyOffice DocumentServer 8.0.1编译破解版本(¥100)

OnlyOffice DocumentServer 8.0.1编译破解版本&#xff08;&#xffe5;100&#xff09; 破解20人数限制 更换中文字体 修改源码&#xff0c;根据业务自定义服务 根据源码在本机启动项目&#xff0c;便于开发 将编译好的服务打包docker镜像运行 提供各种docker镜像包&…...

Android 应用权限

文章目录 权限声明uses-permissionpermissionpermission-grouppermission-tree其他uses-feature 权限配置 权限声明 Android权限在AndroidManifest.xml中声明&#xff0c;<permission>、 <permission-group> 、<permission-tree> 和<uses-permission>…...

【GitHub项目推荐--Godogen:一句话生成完整 Godot 游戏的 AI 流水线】⭐⭐⭐

简介 Godogen​ 是一套基于 Claude Code​ 构建的自动化游戏开发流水线。它不仅仅是一个代码生成器&#xff0c;更是一个全栈的“AI 开发团队”&#xff1a;你只需用自然语言描述游戏创意&#xff0c;它便能自动完成架构设计、美术生成、代码编写、引擎截图、视觉质检的全流程…...

S32K3项目中途想换调试器?手把手教你为已有工程添加Lauterbach调试接口

S32K3项目中途切换调试器&#xff1a;无缝迁移Lauterbach接口的工程实践 在嵌入式开发领域&#xff0c;调试工具的灵活切换往往意味着效率的飞跃。想象这样一个场景&#xff1a;你正在使用NXP S32K3系列MCU开发汽车电子控制单元&#xff0c;项目已进行到中期测试阶段&#xff0…...

2025_NIPS_Prompt Tuning Transformers for Data Memorization

文章核心总结与翻译 一、主要内容 文章聚焦提示调优(Prompt Tuning)在Transformer模型数据记忆能力上的表现,通过理论分析与实证研究,明确提示调优的记忆机制与关键特性: 理论层面:推导了精确记忆有限数据集所需的提示长度上界,证明常数规模Transformer可通过长度为O~…...

如何快速上手tuic:从零开始的安装与配置教程

如何快速上手tuic&#xff1a;从零开始的安装与配置教程 【免费下载链接】tuic 项目地址: https://gitcode.com/gh_mirrors/tu/tuic tuic是一款高效的GitHub加速工具&#xff0c;能够帮助用户解决GitHub访问速度慢、连接不稳定等问题&#xff0c;让开发者更流畅地获取G…...

3个秘诀让城通网盘下载提速10倍:ctfileGet工具全解析

3个秘诀让城通网盘下载提速10倍&#xff1a;ctfileGet工具全解析 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet ctfileGet是一款专注于获取城通网盘直连地址的开源工具&#xff0c;通过本地解析技术帮…...

3个步骤,让猫抓帮你轻松捕获网页视频资源

3个步骤&#xff0c;让猫抓帮你轻松捕获网页视频资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的情况&#xff1f;在网…...

PyTorch 2.8镜像工业设计:CAD图纸→AI生成产品渲染视频→营销素材输出

PyTorch 2.8镜像工业设计&#xff1a;CAD图纸→AI生成产品渲染视频→营销素材输出 1. 工业设计新范式&#xff1a;从CAD到营销视频的全流程AI化 传统工业设计流程中&#xff0c;从CAD图纸到产品营销素材的转化往往需要耗费大量时间和人力成本。设计师需要先完成3D建模&#x…...

Llama-3.2V-11B-cot实战:基于SpringBoot构建企业级智能客服原型

Llama-3.2V-11B-cot实战&#xff1a;基于SpringBoot构建企业级智能客服原型 最近在帮一个朋友的公司做技术选型&#xff0c;他们想快速搭建一个智能客服原型&#xff0c;既要成本可控&#xff0c;又要能快速集成到现有的Java技术栈里。聊了一圈&#xff0c;发现很多团队都卡在…...

【Python内存管理终极指南】:20年专家实测5大智能策略,90%开发者忽略的GC优化盲区揭晓

第一章&#xff1a;Python智能体内存管理策略对比评测报告全景概览本报告聚焦于当前主流Python智能体&#xff08;Agent&#xff09;框架在内存管理层面的设计差异与运行表现&#xff0c;涵盖LangChain、LlamaIndex、AutoGen及自研轻量Agent Runtime四大实现。评测维度包括对象…...

告别纯Verilog手搓!用Vivado HLS快速搭建你的第一个CNN加速器(ZYNQ平台实战)

从Verilog到Vivado HLS&#xff1a;ZYNQ平台CNN加速器开发实战指南 在FPGA开发领域&#xff0c;传统RTL设计方法正面临越来越复杂的算法实现挑战。以卷积神经网络(CNN)为例&#xff0c;一个简单的三层网络就可能需要数万行Verilog代码&#xff0c;不仅开发周期漫长&#xff0c;…...