(六)WPF - 资源和样式行为(1)

这篇具有很好参考价值的文章主要介绍了(六)WPF - 资源和样式行为(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、资源

1、资源集合

每个元素都有一个 Resources 属性,该属性存储了一个资源字典集合(它是 Resource Dictionary 类的实例)。资源集合可以包含任意类型的对象,并根据字符串编写索引。

为了使用 XML 标记中的资源,需要一种引用资源的方法。这是通过标记扩展完成的。
有两个标记扩展可供使用:一个用于动态资源,另一个用于静态资源。

静态资源: 在第一次创建窗口时一次性地设置完毕。
动态资源: 如果发生了改变,则会重新应用资源。

2、资源的层次

每个元素都有自己的资源集合,并且为了找到期望的资源, WPF 在元素树中进行递归搜索。

使用静态资源时,必须总是在引用资源之前在标记中定义资源。

<Window.Resources>
<ImageBrush x:Key="TileBrush" TileMode="Tile"
			ViewportUnits="Absolute" Viewport" 0 0 32 32"
			ImageSource = "happyface.jpg" opacity="0.3"></ImageBrush>
</Window.Resources>
....

3、访问二进制资源

二进制资源如图片等信息。

<Image Height="21" Source="test.png"

System.Windows.Controls.Image 是一种很方便的访问每一个二进制图像的控件。
Image 类有一个 Source 属性,类型是 System.Windows.Media.ImageSource。

如果把资源变为松散文件,不想把它加入到项目中来。
<Image Height="21" Source="c:\User\Adam\Doucments\test.png"/>
从部署位置访问资源
<Image Height="21" Source="pack://application:,,,/Resources/Image/test.png"/>
<Image Height="21" Source="pack://siteOfOrigin:,,,/Resources/Image/test.png"

4、静态资源和动态资源

WPF 提供了两种访问逻辑资源的方式:

  • 一种静态的,由 StaticResource 实现,这种资源仅会被应用一次(第一次需要资源时加载)。
  • 一种是动态资源,由 DynamicResource 实现,这种资源每次更改时都会被重新应用。

两者区别:

  • 静态资源只从资源集合中获取对象一次。

  • 动态资源在每次需要对象时都会重新从资源集合中查找对象。

  • 动态资源需要占用更多的资源。

  • 使用动态资源可以改善加载时间,对静态资源的引用总是发生在 Window 或 Page 加载之后,而对动态资源的引用要到实际使用时才会生效。

  • 动态资源只能用于设置依赖属性值,而静态资源可以在任何地方使用。

  • 静态资源必须在 XMAL 文件中声明之后才可以使用,而动态资源没有限制。

第一次加载时的性能:

  • 动态资源在第一次使用它们时加载,而静态资源总是在创建窗口时加载。(因此,动态资源还被用于提高第一次加载时的性能)

明显的例子:
当创建依赖于 Windows 设置(例如系统颜色)的资源时。对于这种情况,如果希望能够相应当前颜色方案的任何改变,就需要使用动态资源。否则,如果使用静态资源,将仍然使用原来的颜色方案,直到用户重新启动应用程序为止。

使用动态属性时:

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

5、非共享资源

当在多个地方使用某种资源时,使用的是同一个对象实例。这种行为——被称为共享。
而希望解释器在每次使用时创建单独的对象实例,就要关闭共享行为。文章来源地址https://www.toymoban.com/news/detail-499344.html

<ImageBrush 

到了这里,关于(六)WPF - 资源和样式行为(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【100个 Unity实用技能】☀️ | C#泛型集合常用方法,查找符合要求的第一个元素并返回

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2023年04月08日
    浏览(56)
  • 报错:Error,关于运行localhost://8080/一直提示:“源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。“的可能问题集合。

    查看端口占用问题 查看Tomcat的安装问题及配置问题 查看web.xml是否缺少配置 查看网页内容引用路径问题 考虑是否权限问题 改端口号,比如改成:8888 ↓【找到Tomcat安装目录→conf文件夹→server.xml(记事本打开)→找到Connect port→修改8080】 (1)Tomcat计算机环境配置 【在官网

    2024年02月04日
    浏览(73)
  • 每日一题——LeetCode1299.将每个元素替换为右侧最大元素

    方法一 个人方法:  题目意思就是求在i=1;i++的循环条件下,arr[i]-arr[arr.length-1]的最大值分别为多少,最后一项默认为-1 用slice方法可以每次把数组第一位去除,得到求最大值的目标数组 Math的max方法可以直接返回数组里的最大值 但是不能每次循环都求一遍目标数组的最大值,

    2024年01月23日
    浏览(54)
  • 2635. 转换数组中的每个元素

    🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 编写一个函数,这个函数接收一个整数数组 arr 和一个映射函数 fn ,通过该映射函数返回一个新的数组。 返回数组的创建语句应为 returnedArray[i] = f

    2024年01月21日
    浏览(34)
  • WPF中使用TabControl为每个页签添加不同窗体的方法。

    注:每一个页签添加不同窗体,其实不能叫是窗体,只能叫做控件。我这么起标题主要是方便一些新手来搜索答案。 项目需求: 对于一些上位机控制程序来说,一个窗体根本放不下所有的功能,所以我们通常会使用TabControl控件来进行分类布局。通过选择分类选项卡,来展示

    2024年02月12日
    浏览(40)
  • WPF行为

    背景:实现按钮鼠标移动到上方有点交互效果或变一下有阴影。这样使用触发器就行了,但是如果是每个控件都有效果的话使用行为更加合适 1、下载NuGet包:Microsoft.xaml.behavior.wpf 2、创建行为类EffectBehavior,对Behavior进行重写         -- 就是简单加上鼠标移动到控件上面加上

    2024年01月23日
    浏览(32)
  • 每个.NET开发都应掌握的C#集合知识点

    上篇文章讲述了C#委托和事件知识点,本文将介绍C#集合知识点。作为.NET开发人员,C#集合是你在构建强大和高效应用程序时的关键技能之一。C#集合提供了一系列丰富的数据结构,可以帮助你更好地管理、操作和组织数据。本文将介绍一些每个.NET开发人员都应该掌握的C#集合

    2024年02月10日
    浏览(46)
  • Eigen 对矩阵的每个元素取绝对值

      使用Eigen库对矩阵的每一个元素进行取绝对值操作非常简单。可以使用array()函数将矩阵转换为数组,然后使用abs()函数对数组中的每个元素取绝对值,最后使用matrix()函数将数组转换回矩阵。下面是一个示例代码:

    2024年02月04日
    浏览(44)
  • MATLAB:矩阵 矩阵的秩,矩阵的逆矩阵,矩阵的转置,矩阵每个元素减一,矩阵元素变换

    1.矩阵 A=[1,2,3;4,5,6;7,8,9]/A=[1 2 3;4 5 6;7 8 9](分号与空格用于区分每行之间的元素,分号区分行)   2.矩阵每个元素减一 B=A-1 3.矩阵元素变换 需要某一行或者某一列为0,可以用“:”代表一行 如A(:,3)代表第三列赋值为零    A( 3,:)代表第三行赋值为零     4.矩阵的秩

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包