WPF—资源的使用

news2024/11/15 11:12:17

资源的使用

资源是可以在应用中的不同位置重复使用的对象。 资源的示例包括画笔和样式。

    <Window.Resources>
        <!--定义颜色资源-->
        <SolidColorBrush x:Key="MyBrush" Color="#05E0E9"/>
        <!--定义样式资源-->
        <Style TargetType="Border" x:Key="borderStyle">
            <!--使用颜色资源-->
            <Setter Property="Background" Value="{StaticResource MyBrush}" />
            <Setter Property="BorderThickness" Value="20" />
            <Setter Property="BorderBrush">
                <Setter.Value>
                    <LinearGradientBrush>
                        <GradientStop Offset="0.0" Color="#4E1A3D"/>
                        <GradientStop Offset="1.0" Color="Salmon"/>
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <!--使用样式资源-->
    <Border Style="{StaticResource borderStyle}"></Border>

每个框架级元素都具有 Resources 属性,该属性是包含已定义资源的 ResourceDictionary类型。 你可以在任何元素上定义资源,例如 Button。 但是,最常在根元素上定义资源,本示例中的根元素为 Window。

资源字典中的每个资源都必须具有唯一键。 在标记中定义资源时,可通过 x:Key 指令来分配唯一键。 通常情况下,这个键是一个字符串;

你可以使用具有资源标记扩展语法(指定资源的键名)的已定义资源。 例如,将资源用作另一个元素上的属性的值。

    <Button Background="{StaticResource MyBrush}"/>
    <Ellipse Fill="{StaticResource MyBrush}"/>

在前面的示例中,如果 XAML 加载程序处理 Button属性的值 `{StaticResource MyBrush}`​,则资源查找逻辑会首先检查 `Button`​ 元素的资源字典。 如果 `Button`​ 没有资源键 `MyBrush`​ 的定义(在该示例中没有;其资源集合为空),则查找逻辑接下来会检查 `Button`​ 的父元素。 如果未在父级上定义资源,会继续向上检查对象的逻辑树,直到找到它。

静态和动态资源

资源可引用为静态资源或动态资源。 可通过使用 StaticResource 标记扩展 或 DynamicResource 标记扩展创建引用。

  • StaticResource`​通过替换已定义资源的值(x:Key)来为 XAML 属性提供值。
  • DynamicResource `​通过将值推迟为对资源的**运行时**引用来为XAML 属性提供值。
  • 动态资源引用强制在每次访问此类资源时都重新进行查找。

通常来说,不需要在运行时更改的资源使用静态资源;而需要在运行时更改的资源使用动态资源。动态资源需要使用的系统开销大于静态资源的系统开销。

    <Window.Resources>
        <!--定义颜色资源-->
        <SolidColorBrush x:Key="MyBrush" Color="#05E0E9"/>
    </Window.Resources>
    <StackPanel>
        <Label Content="静态绑定" Background="{StaticResource MyBrush}"/>
        <Label Content="动态绑定" Background="{DynamicResource MyBrush}"/>
        <Button Content="修改颜色" Click="Button_Click"/>
    </StackPanel>
   private void Button_Click(object sender, RoutedEventArgs e)
    {
        Resources["MyBrush"] = new SolidColorBrush(Colors.Red);
    }

当按钮点击修改资源时,窗体展示效果如图

由此可见,更改资源时,动态引用的控件样式发生变化

再看另一个例子,代码如下,使用StaticResource绑定到自身资源以及当前控件下面定义的资源时,会抛出错误。这是因为静态资源是从自身控件容器开始向上依次查找解析的,而动态资源则是在运行期间xaml解析完成后进行查找解析的。

总结

  • 资源发生变化时控件绑定也需要变化时使用动态资源,资源不会发生变化时用静态
  • 资源定义在使用下面时必须用动态


本篇文章部分来源网络,如有侵权请联系删除!!!

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

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

相关文章

前端技术(五)—— 使用Node.js编写简单的项目

一、 初始化项目 1. 创建项目 ⑴ 新建 api_kjzt_server 文件夹作为项目根目录&#xff0c;并初始化包管理配置文件 并在项目根目录中运行如下的命令&#xff0c;初始化包管理配置文件&#xff1a; npm init -y⑵ 运行如下的命令&#xff0c;安装特定版本的 express npm i e…

企业级WEB应用服务器TOMCAT详解

一、什么是TOMCAT 1.1来源 Tomcat是Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持&#xff0c;最新的Servlet 和JSP 规范总是能…

A Neural Probabilistic Language Model

摘要 统计语言建模的一个目标是学习单词序列的联合概率函数。由于维度的诅咒&#xff0c;这在本质上是困难的:我们建议用它自己的武器来对抗它。在提出的方法中&#xff0c;人们同时学习(1)每个单词的分布式表示&#xff08;词向量&#xff09;(即单词之间的相似性)以及(2)表示…

TypeScript 类型注解(二)

一、TypeScript类型约束--对象 对象其实和数组类似&#xff0c;不是限制对象本身的类型&#xff0c;而是对对象属性类型进行限制 结构简化&#xff1a; 对对象做类型限制的好处&#xff1a; 大家都学习过一段时间编程了&#xff0c;会发现咱们经常操作的类型就是对象&#xf…

使用miniconda构建数据科学环境

背景 数据科学中&#xff0c;不同时期项目代码往往是由不同的版本的python和第三方数据科学包构建&#xff0c;这些不同版本往往会存在兼容性问题&#xff0c;要运行这些代码&#xff0c;需要管理不同的版本的安装包。Conda是一个开源的包管理和环境管理系统&#xff0c;环境管…

Linux | 编译和使用自定义动静态库的全面解析

新竹高于旧竹枝&#xff0c;全凭老干为扶持。 - 《新竹》(郑燮) 2024.8.25 目录 1、静态库和动态库简介 静态库&#xff08;.a&#xff09;&#xff1a; 动态库&#xff08;.so&#xff09;&#xff1a; 动态库和静态库的比较&#xff1a; 2、静态库的生成和使用&#xff…

GCB | 首次揭示!气候变化对常绿和落叶植物物候差异化影响的机制

气候变化引起的植物物候改变已对全球范围内生物多样性和生态系统产生重大影响&#xff08;Nature高引文章 | 北京大学朴世龙院士等&#xff1a;全球变暖对植被物候的影响及其机制&#xff1b;Nature Ecology & Evolution | 南京大学张永光教授团队揭示延长的植被物候期受CO…

set容器的所有操作

1.基本概念 2.构造和赋值 3.大小和交换 4.插入和删除 5.查找和统计 6.set和multiset的区别 7.pair对组创建 用p.first和p.second调用前后两个属性。 8.仿函数实现降序排列 自定义数据类型也一样用仿函数&#xff1a;

【领域驱动设计 打通DDD最小闭环】领域建模

本篇BLOG为DDD流程的第二步&#xff0c;在模型的建立阶段&#xff0c;领域专家与技术人员通过领域建模来完成更为细致的模型建立讨论 领域建模的目的 领域建模主要有两个目的&#xff1a; 将知识可视化&#xff0c;准确、深刻地反映领域知识&#xff0c;并且在业务和技术人…

Python优化算法14——海鸥优化算法(SOA)

科研里面优化算法都用的多&#xff0c;尤其是各种动物园里面的智能仿生优化算法&#xff0c;但是目前都是MATLAB的代码多&#xff0c;python几乎没有什么包&#xff0c;这次把优化算法系列的代码都从底层手写开始。 需要看以前的优化算法文章可以参考&#xff1a;Python优化算…

【图文并茂】ant design pro 如何给后端发送 json web token - 请求拦截器的使用

上一节有讲过 【图文并茂】ant design pro 如何对接后端个人信息接口 还差一个东西&#xff0c;去获取个人信息的时候&#xff0c;是要发送 token 的&#xff0c;不然会报 403. 就是说在你登录之后才去获得个人信息。这样后端才能知道是谁的信息。 token 就代码了某个人。 …

工作实战-项目压测记录

1-1-1每分钟的单量 1-1-2第二版测试 2022年5月16日 17:43:11 成功 失败 其它(nginx) 真实入库单量 总单量 52 1 447 500 2022年5月16日 19:42:18 成功 失败 其它(nginx) 真实入库单量 总单量 311 689 306 1000 2-0-1. 20线程-2000单执行结果 2-1-0. 40线…

金融科技 API 接口:提升金融服务效率的关键

金融科技是应用技术手段和创新理念来提升金融服务效率的重要途径。而其中的API接口则是实现金融科技的关键。API接口的简单定义是提供计算机程序之间通信的规范和工具&#xff0c;提供一种方法和数据的交互形式&#xff0c;以便开发人员能够利用现有的软件来创建新的应用和服务…

前端网格布局display: grid;

display: grid; 块级网格 &#xff08;常用&#xff09; display: inline-grid; 行内块级网格 &#xff08;一般不用&#xff09; HTML 元素将 display 属性设置为 grid 或 inline-grid 后&#xff0c;它就变成了一个网格容器&#xff0c;这个元素的所有直系子元素将…

Mobile-Agent项目部署与学习总结(DataWhale AI夏令营)

前言 你好&#xff0c;我是GISer Liu&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;本文是DataWhale 2024 AI夏令营的最后一期——Mobile-Agent赛道&#xff0c;这是作者的学习文档&#xff0c;这里总结一下&#xff0c;和作者一起学习这个多模态大模型新项目吧&#x1f6…

开放式耳机对耳朵的伤害会减小吗?亲测好用的四款蓝牙耳机

开放式耳机对耳朵的伤害相对较小。 首先&#xff0c;开放式耳机不入耳&#xff0c;不会直接堵塞耳道&#xff0c;减少了对耳道的挤压和摩擦&#xff0c;降低了因长期佩戴入耳式耳机可能导致的耳道发炎、疼痛等问题。 其次&#xff0c;由于耳朵没有被完全封闭&#xff0c;耳部能…

【C/C++】结构体指针赋值的方法

在C语言中&#xff0c;结构体指针赋值有两种方法&#xff1a; 1.使用"->"操作符&#xff1a;通过结构体指针访问结构体成员并赋值。例如&#xff1a; struct Student {int id;char name[20]; };int main() {struct Student s1;struct Student *ptr_s1 &s1;…

设计模式学习[4]---依赖倒置原则+里氏代换原则

文章目录 前言1. 依赖倒置原则1.1 原理阐述1.2 举例 2.里氏代换原则2.1 原理阐述2.2 举例说明 总结 前言 在给发新功能模块之前&#xff0c;都先要画UML类图进行需求分析。对每一个类的作用&#xff0c;类与类之间的关系做一个详细的阐述。确定好基本的框架之后&#xff0c;才…

Lumos学习王佩丰Excel第十四讲:日期函数

一、认识时间和日期 1、回顾日期格式 日期可以由数字表示。 2、时间格式 时间由小数表示。 3、基本的时间与日期运算 二、日期函数 1、Year、Month、Day函数 2、Date函数 DATE(year,month,day&#xff09;&#xff1a;year为必需参数&#xff0c;可以包含1到4个数字。Day函…

LeetCode 热题 100 回顾

目录 一、哈希部分 1.两数之和 &#xff08;简单&#xff09; 2.字母异位词分组 &#xff08;中等&#xff09; 3.最长连续序列 &#xff08;中等&#xff09; 二、双指针部分 4.移动零 &#xff08;简单&#xff09; 5.盛最多水的容器 &#xff08;中等&#xff09; 6…