WPF中使用资源

    这节讲一下如何在WPF中使用资源。

01

了解资源

    在编程中,一个变量,一段代码,一张图片,一段视频或者音频,这种可以拿来为我所用的东西就可以称之为资源,一个让人眼前一亮的程序,可能会使用到许许多多的资源。在WPF中,除了常用的根据路径引用资源文件,还为我们提供了管理资源数据的“对象级”资源,以及Resources.resx文件,前者通过一个类型为ResouceDictionary的键值对对象来管理页面中定义的资源,后者则是一个资源表,可以供我们全局使用(当前并不是前者不能让我们全局使用,我们在App.xaml中定义的资源是可以被全局使用的)。

02

"对象级"资源

    我们可以在XAML页面定义一些资源供我们使用,请先看如下代码:

94c31e4aae347630e0d286da92168ff8.png

    在Window.Resources标签内的ResouceDictionary中可以定义资源,通过key属性指定资源的标识。此处我定义了key为btn_bgc字符串资源,该资源被Grid中的Button.Content属性使用,运行效果如下:

fea2141a8553a959102f697aad6844e9.png

    在Xaml中,我们可以使用标记扩展中的StaticResourceDynamicResource指令引用资源,该两者的区别是,使用StaticResource,会在程序启动时读取一次资源数据,后续如果资源数据变动,引用者是不会知道的;而DynamicResource则是会多次读取,动态更新。

    除了在Xaml中使用资源,我们也可以在代码中通过Resoure对象获取,请看如下代码:

72e8853b5d8389eae42f9d50f4bc7f3d.png

    从后台代码中,我们可以使用FindResource方法或访问Resources对象通过索引器的方式获取,但两者还是有区别的,FindResource方法的查找面很广,在App.Xaml中定义的资源,也会被找到,而Resources对象则是只会找本页面定义的资源。

03

Resources.resx文件

    在项目的Properties下展开可以找到这个文件:

ff88d78117f11885cf62661e644f6b4c.png

    双击打开后,是个列表,我们可以看到是个表格界面:

815ef92fd0d7c6a5f89691e53e68e50e.png

    左上角可以指定资源是string还是其它:

5761f35415f80163436a14cf79264bbc.png

    默认情况下,该文件的访问级别(Access Modifier)是Internal,也就是在代码中可以访问,一般来说,应该改为Pubilc,这样在Xaml中也可以访问。

    在代码中获取该资源如下:

ec37c672e4d5c371a8943d1accaa2309.png

    在Xaml中获取该资源如下:0c1fffcea785f7df037b832aaf4a5354.png

    在.NET 5版本中,默认去掉了Properties这个文件夹,但如果需要的话我们依然可以通过手动为项目添加Resources.resx文件。

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

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

相关文章

生成二维码的 jQuery 插件:jquery.qrcode.js

jquery.qrcode.js 是一个纯浏览器 生成 QRcode 的 jQuery 插件,它使用非常简单,生成的 QRcode 无需下载图片,并且不依赖第三方服务,比如最近 Google 服务在国内访问不稳就造成我好几个网站的 QRcode 不能使用,并且压缩…

java 中时间计算_java中关于时间的计算

1.描述:在原有时间上增加一个时间差:代码示例:Date psd sysDate();String workTimeP1 mapP.get("WORK_TIME_") ! null ? mapP.get("WORK_TIME_").toString() : "0";int newsInteger.parseInt(workTimeP1)*6…

Android之JNI的使用

转载:http://blog.csdn.net/zeng622peng/article/details/6675666 首先说明,Android系统不允许一个纯粹使用C/C的程序出现,它要求必须是通过Java代码嵌入Native C/C——即通过JNI的方式来使用本地(Native)代码。因此J…

OpenJudge计算概论-最长单词2

/* 最长单词2 总时间限制: 1000ms 内存限制: 65536kB 描述 一个以.结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式输入 一个以.结尾的简单英文句子(长度不超过500),单词之间用空格分隔&#xff0c…

清华放大招!竟然连初三学生都招,一条龙培养到博士,还不准转专业......

全世界只有3.14 % 的人关注了爆炸吧知识提前5年博士毕业近日,清华大学本科招生网发布了一则重要公告——《清华大学2021年丘成桐数学科学领军人才培养计划招生办法》。在这则公告中,初三生,你没看错,是没有参加过中考、高考的初三…

一键生成Vue.js + Web API前后端集成项目

前言默认情况下,Visual Studio提供了“基于Vue.js Web 应用程序”项目模板,可以生成Vue.js前端项目。你需要另外创建Web API项目,调试时需要同时启动2个项目,然后还要解决前后端集成带来的问题,比如跨域访问。如果&…

java多线程数据采集_java多线程采集+线程同步

前些日子讲解了java数据抓取, 今天就讲解最核心的。 java多线程数据抓取。java多线程采集数据同步线程同步【多线程数据采集之四】主要讲解多线程抓取,多线程同步,多线程启动,控制等操作。先讲解第一步,线程类。 核心…

【LINUX学习】链接文件

linux下的连接文件和windows下的快捷方式有点像。不过linux 下有硬链接和软链接两种。硬链接:是在某个目录下新增一个源链接文件的关联数据。比如 为/etc/passwd 创建一个硬链接/tmp/passwd-hd 其实就是这两个文件是同一个文件,通过etc 目录中的passwd …

链表之反转部分单向链表

package com.chenyu.zuo.linkedList;import com.chenyu.zuo.linkedList.RemoveByRatio.Node;/*** 题目:给定一个单向链表的头结点head,以及两个整数from和to* ,在单项链表上把第from个节点和第to个节点这一部分进行反转* 列如:* 1->2->3->4->5->null,from=2,t…

【DB2学习文档之七】SQL for DB2

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.SQL的数据操作语言data manipulation language (DML) 参见Beginning SQL Queries: From Novice to Professional, by Clare Churcher (Apress, 2008) 2.Select语句 这个语句是DB2中最简单也最复杂的语…

这些让人看瞎了的设计!实力证明,谁才是世界的最终boss!

全世界只有3.14 % 的人关注了爆炸吧知识我瞎了也懵了昨天知识君刷微博,看到了一组动图,一时间我都不知道是我的眼睛出了错,还是我的大脑反应不过来。奇了怪了!怎么箭头反转了180后,还是原样!问题到底出在哪…

如何实现 asp.net core 安全优雅退出 ?

咨询区 AppDeveloper我想问一个老生常谈的问题,如何可以保证程序优雅的退出,这里用 优雅 的目的是因为我想在退出之前做一些小动作。用户场景:希望在程序退出之前可以从 Consul 上解注册, 下面是我的模板代码。public static IWebHostBuilder…

持续集成之配置TeamCity

离开上个东家差不多有一年半的时间了,这一年半更多的还是在学习,或者说更多的是在收拾前辈们写的代码,其中的酸甜苦辣只有经历过的人才知道,想想还是上个东家好,软件研发的流程很规范,各种配套的工具都是现…

java 上传文件编码_(java)有什么办法把MultipartFile上传的文件转为utf-8的编码吗

[Java] 纯文本查看 复制代码import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import org.apache.tika.Tika;import org.apache.tika.detect.AutoDetectReader;import org.apache.tika.exception.TikaExc…

Android之的性能优化方法

1、布局优化: 原理:尽量减少布局的文件的层级,层级越少,Android绘制时的工作量少了,程序性能提高 1、删除无用的控件和层级,选择使用性能较低的ViewGroup,比如RelativeLayout 2、如果布局在有LinearLayout和RelativeLayout,建议使用LinearLayout,RelativeLayout功能…

Set函数、Get函数、点语法和类方法

1.Set函数 setter函数,对成员变量赋值。Set函数的一般写法以对age操作为例,写法为: -(void)setAge:(int)newage。 2. Get函数 getter函数,对成员变量取值。Get函数的一般写法也以对age的操作为例,写法为: -…

弹出框css技巧

2019独角兽企业重金招聘Python工程师标准>>> 技术要点&#xff1a; 一个覆盖整个屏幕的浅灰色背景的div,一个包含内容的的div, 代码如下&#xff1a; <div id"financeTip" style""><div class"financeTipBg" style"&qu…

在业务层实现校验请求参数

前言在前面的文章中&#xff0c;我们介绍了在业务层实现管道模式&#xff1a;响应缓存记录请求日志今天&#xff0c;我们同样使用IPipelineBehavior&#xff0c;介绍如何在业务层实现校验请求参数&#xff0c;用于检查输入是否满足业务要求。Demo首先&#xff0c;创建ASP.NET C…

Leetcode: Valid Parentheses

与 POJ 上那道括号匹配相比, 这道可谓简单 思路: 堆栈存储符号, 遇到匹配弹出 代码: #include <iostream> #include <stack> using namespace std;class Solution { public:bool isValid(string s) {stack<char> record;for(int i 0; i < s.size(); i ) …

Android之Bitmap的内存优化方案总结

在Android应用里&#xff0c;最耗费内存的就是图片资源。而且在Android系统中&#xff0c;读取位图Bitmap时&#xff0c;分给虚拟机中的图片的堆栈大小只有8M&#xff0c;如果超出了&#xff0c;就会出现OutOfMemory异常。所以&#xff0c;对于图片的内存优化&#xff0c;是And…