首页 > 其他分享 >WPF笔记5——动态资源(DynamicResource)

WPF笔记5——动态资源(DynamicResource)

时间:2024-11-26 14:11:09浏览次数:6  
标签:笔记 ResourceChanged DynamicResource 资源 MyDynamicBrush WPF resources

动态资源(DynamicResource)是WPF中的一种引用资源的方式,即在运行是查找资源。

与StaticResource性比,DynamicResource的性能稍差,因为每次要资源时,都要进行查找。

如果资源是在引用它的元素之后定义的,或者资源的值在应用程序运行期间发生变化,那么使用DynamicResource引用的员会自动更新以反映这些变化。

1、在xaml中定义一个资源,并动态引用:

点击查看代码
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <SolidColorBrush x:Key="MyDynamicBrush" Color="Red"/>
    </Window.Resources>
    <Grid>
        <Button Background="{DynamicResource MyDynamicBrush}" Content="Click Me"/>
    </Grid>
</Window>

2、在代码中操作资源

点击查看代码
//获取资源自动
ResourceDictionary resources = this.Resources;

//通过资源的键(x:key值)来获取或设置资源
if (resources.Contains("MyDynamicBrush"))
{
    SolidColorBrush brush = (SolidColorBrush)resources["MyDynamicBrush"];
    brush.Color = Colors.Green;
}
 

当动态资源发生变化时,WPF会自动更新UI。

但是有时候需要在资源变化时执行一些额外的逻辑。可通过监听资源变化事件来实现。

例如:为资源字典的ResourceChanged事件添加一个处理程序:

点击查看代码
resources.ResourceChanged += Resources_ResourceChanged;
private void Resources_ResourceChanged(object sender, ResourceChangedEventArgs e)
{
    if (e.Key == "MyDynamicBrush")
    {
        // 在这里执行资源变化后的其他操作,比如记录日志等
    }
}

标签:笔记,ResourceChanged,DynamicResource,资源,MyDynamicBrush,WPF,resources
From: https://www.cnblogs.com/zeoHere/p/18570055

相关文章

  • SpringBoot云笔记设计00530 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,文件类型,笔记类型,文件信息,日常笔记开题报告内容题目:基于SpringBoot的云笔记系统设计一、研究背景与意义随着信息技术的飞速发展,个人及企业......
  • WPF笔记4——静态资源(StaticResource)
    在WPF中,资源(Resource)是一种存储和共享对象的方式,可以在应用程序的不同部分之间重用。在WPF中,有两种资源引用方式:静态资源(StaticResource)和动态资源(DynamicResource)静态资源(StaticResource)静态资源,用于在xaml加载时解析并应用资源。它通常用于引用在资源字典中定义的对象,如样式......
  • 界面控件DevExpress WPF v24.2新功能预览 - 支持DateOnly & TimeOnly
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • [编程笔记] 系统日期格式引起的bug
    系统获取的日期格式不对,导致程序出现异常,出现过多次了,这里记录一下。起因是测试说某个跟日期相关的活动,在他环境里失效,而我们开发本地测试了多遍都是正常的,这就很奇怪了,有种想给他重装系统的念头,哈哈。经过一系列的分析和排查,发现是他本地系统设置的日......
  • 工作学习笔记(十五)Mybatis-Plus项目中使用eq
    在今天的工作中遇到了一个问题,在这记录一下第一次使用eq()。方法作用它的主要作用是在构建SQL查询语句的条件部分时,添加一个等于的判断条件。例如,当你想从数据库表中查询出某一字段值等于特定值的记录时,就可以使用eq()方法来实现这个条件构建。方法语法及参数说明语法:......
  • 程序员修炼之道,从小工到专家 阅读笔记
    时间管理的重要性:时间是程序员最宝贵的资源,要学会如何高效利用。提出了时间管理的基本原则,例如优先任务、避免拖延等。设定优先级:使用“重要-紧急”矩阵来评估和排序任务。先完成重要且紧急的工作,然后是重要但不紧急的任务。专注(DeepWork):强调在编程时应减少干扰,保持专......
  • python复习笔记——2024.11.25
    2024.11.25一、类的定义二、类与实例的关系#定义一个猫类,age,name,color是属性,或者称为成员变量classCat: age=Nonename=Nonecolor=Nonecat1=Cat()#通过对象名.属性名,可以给各个属性赋值cat1.name="小白"cat2,age=2cat3.color="白色"print(f......
  • Java学习笔记——2024.11.25
    2024.11.25一、Java_DOS原理1.DOS基本原理创建文件夹=>mdd:\\xxx消除文件夹=>rdd:\\xxx2.相对路径和绝对路径=>相对路径:从当前目录开始定位,形成的一个路径=>绝对路径:从顶级目录d,开始定位,形成的路径举例子:相对路径:..\..\abc2\test200\hello.txt......
  • 读《Effective Java》笔记 - 条目8
    条目8:避免使用终结方法和清理方法什么是终结方法(finalizer)和清理方法(cleaner)?终结方法(finalizer):是Object类的一个方法:protectedvoidfinalize(),可以由子类重写。(Java9开始已经弃用,但是Java类库仍在使用)它在垃圾收集器(GarbageCollector)将对象回收之前调用,用来释放资......
  • 学习笔记(四十六):$$语法:内置组件双向同步
    概述:$$运算符为系统内置组件提供TS变量的引用,使得TS变量和系统内置组件的内部状态保持同步使用规则:1、当前$$支持基础类型变量,以及@State、@Link和@Prop装饰的变量2、$$绑定的变量变化时,会触发UI的同步刷新3、支持的组件 使用示例:@Entity@ComponentexportstructLog......