StaticResource 是静态资源

DynamicResource是动态资源

用一下例子说明

<Window.Resources><Style x:Key="BorderStyle" TargetType="{x:Type Border}"><Setter Property="BorderThickness" Value="5" /><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Background" Value="Blue" /><Setter Property="BorderBrush" Value="Red" /></Trigger><Trigger Property="IsMouseOver" Value="False"><Setter Property="Background" Value="Red" /><Setter Property="BorderBrush" Value="Blue" /></Trigger></Style.Triggers></Style><Style x:Key="TextBlockStyle" TargetType="{x:Type TextBlock}"><Setter Property="FontFamily" Value="宋体" /><Setter Property="FontSize" Value="18" /><Setter Property="Foreground" Value="Red" /><Setter Property="FontWeight" Value="Bold" /></Style></Window.Resources><Grid><BorderWidth="100"Height="100"Style="{DynamicResource BorderStyle}" /><TextBlockHorizontalAlignment="Center"VerticalAlignment="Top"Style="{StaticResource TextBlockStyle}"Text="TEXT1" /></Grid>

我的理解而言:

Border的样式是用动态资源获取的 ,因为它用到了触发器,会变化数据,所以需要用DynamicResource来获取样式。

TextBlock是用静态资源获取,因为它只获取样式内容无变化数据。所以用StaticResource来获取。

TextBlock也可以使用DynamicResource来获取样式 但是它会多次调用,会占许些资源,当量大的时候会让程序变慢,所以要合理使用。

Border如果使用StaticResource来获取样式,将会收到错误提示:“StaticResource reference 'BorderStyle' was not found.” 原因是StaticResource 查询行为不支持向后引用,即不能引用在引用点之后才定义的资源。而DynamicResource可以向后引用,即DynamicResource运行时才查找并加载所定义的资源。

网上有各个大佬精细的说明,我就简单总结下:

StaticResources时

要在资源第一次引用之后无需再修改资源的值。

DynamicResource时

资源的值依赖一些条件,而该条件直到运行时才能确定。

限制条件:属性必须是依赖属性,或是Freezable的。

详细的可参考大佬这编文章:(18条消息) WPF教程(五)资源(StaticResource 静态资源、DynamicResource 动态资源)_鱼骨头科技-CSDN博客_wpf 动态资源https://blog.csdn.net/yangwenxue1989/article/details/81385856

WPF中的StaticResource和DynamicResource有什么区别相关推荐

  1. 闲话WPF之十三(WPF中的资源)

    资源是保存在可执行文件中的一种不可执行数据.通过资源我们可以包含图像.字符串等等几乎是任意类型的数据.如此重要的功能,.NET Framework当然也是支持的,其中内建有资源创建.定位.打包和部署的 ...

  2. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探

    原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感觉WPF的开发思 ...

  3. 艾伟:WPF中,如何将绑定源设置到单件实例

    大概两个月前,曾有位朋友问我:如果我想在WPF中将绑定源设置到某个采用单件模式设计的实例上,应该怎么做呢?这是一个不错的问题.可能这段时间比较忙,呵呵,忘记回答这个问题了,昨天拿到伍迷大哥的<大 ...

  4. WPF中ControlTemplate和DataTemplate的区别

    原文:WPF中ControlTemplate和DataTemplate的区别 下面代码很好的解释了它们之间的区别: <Window x:Class="WPFTestMe.Window1 ...

  5. WPF中制作带中国农历的万年历

    WPF中制作带中国农历的万年历 原文:WPF中制作带中国农历的万年历 本例应用.net 2.0中的ChineseLunisolarCalendar类,制作出带中国农历的万年历.  先看看效果图片(已缩 ...

  6. WPF中使用Hashtable剔除重复字符串(比如电话号码)

    WPF中使用Hashtable剔除重复字符串(比如电话号码) 原文:WPF中使用Hashtable剔除重复字符串(比如电话号码) 本文中的输入框中的字符串是逗号隔开的,你可以换成其他特别的字符串. 本 ...

  7. wpf中xaml的类型转换器与标记扩展

    wpf中xaml的类型转换器与标记扩展 原文:wpf中xaml的类型转换器与标记扩展 这篇来讲wpf控件属性的类型转换器 类型转换器 类型转换器在asp.net控件中已经有使用过了,由于wpf的界面是 ...

  8. Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)

    原文:Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定) ------------------------------ ...

  9. 从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第五讲 WPF中 Style

    Style这个东西几乎是无处不在,这个类似于web开发中的css样式,想要做一个很丰富的UI,这个东西是必不可少的,我也不是专业的UI开发者,这边只能介绍Style在WPF中的用法 下面有一个下载地址 ...

最新文章

  1. LeetCode简单题之长度为三且各字符不同的子字符串
  2. HDFS、MR、Kafka、Storm、Spark、Hbase、Redis原理图
  3. Sencha ID的注册
  4. OpenVINO InferenceEngine之Core类
  5. 开源大数据平台HBase对接OBS操作指南
  6. antd 怎么用ajax,antd-ui-samples
  7. 华为MA5200G实现radius认证登陆
  8. cmd批量修改文件名 增加文字_[Windows应用技巧][cmd篇][批量更改文件名]
  9. Java电子书下载地址
  10. 如何安装PDF打印机
  11. android x5全屏白色,x5webview 自定义全屏界面
  12. 计算机论文物业管理系统,计算机毕业论文-小区物业管理系统.doc
  13. 怎么在html中加校验,如何通过W3C验证?
  14. 赌运挖洞之Apache目录浏览
  15. 十问旷视印奇、唐文斌:AI企业都在经历「死亡之谷」
  16. c语言中 dbl2str,c语言中FLT_DIG和DBL_DIG是什么意思?~
  17. 【调剂】浙江大学计算机学院机械专业2023年硕士研究生招生调剂通知
  18. 软件外包市场发展现状分析
  19. fMRI数据处理_预处理_1_流程及脚本
  20. 单片机I2C总线AT24C02读写、扩展keil工程多个实例及Proteus仿真

热门文章

  1. 解决Ubuntu报错 E: Unable to locate package yum
  2. 高并发系统设计 --基于bitmap的用户签到
  3. 奇安信、深信服、启明星辰的安全红利战
  4. Shell 管道 | 符号
  5. java.net.UnknownHostExceptin:,DNS域名无法解析
  6. 初中数学503个必考知识点_初中生物必考知识点总结_生物必考知识点指南
  7. 苹果系统和安卓系统的区别_安卓系统用久了会卡,苹果系统就能一直流畅?
  8. 放飞自我,用3个终端命令提高工作效率
  9. python高级---协程---放飞自我
  10. 学习日语了。使役被动,转自百度知道。