当前位置: 首页 > news >正文

【WPF编程宝典】第6讲:资源

        研究了 WPF 资源系统使得在应用不同部分可以重用相同对象的原理,介绍了如何在代
码和标记中声明资源,如何提取系统资源,以及如何使用类库程序集在应用程序之间共享资源。

1.资源基础

1.1静态资源和动态资源

        区别:静态资源只从资源集合中获取对象一次。根据对象的类型(以及使用对象的方式),对象的任何变化都可能被立即注意到。然而,动态资源在每次需要对象时都会重新从资源集合中查找对象。这意味着可在同一键下放置一个全新对象,而且动态资源会应用该变化。

        通常不需要使用动态资源,作为一般规则,只有在下列情况下才需要使用动态熟悉。不应过度使用动态资源。许多情况下,需要在控件中显示动态内容,而且控件需要随着内容的改变调整自身。对于这种情况,使用数据绑定更合理。

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

1.2非共享资源

        很少使用。使用Shared特性即可。

<ImageBrush x:Key="TileBrush" x:Shared="False"/>

1.3资源的访问

        资源通常可通过xaml访问,也可通过C#代码访问。

<Window.Resources><ImageBrush x:Key="TileBrush" TileMode="Tile"ViewportUnits="Absolute" Viewport="0 0 32 32"ImageSource="/Images/爆炸.png" Opacity="0.3"/></Window.Resources>// 在xaml中使用
<Button Background="{StaticResource TileBrush}" Content="A Tiled Button" Height="30" Width="300" Margin="5" Padding="5" FontWeight="Bold" FontSize="14"/>// 在代码中使用private void btn_Click(object sender, RoutedEventArgs e){Button btn = (Button)sender;ImageBrush myBrush = (ImageBrush)FindResource("TileBrush");btn.Background = myBrush;}

1.4应用程序资源

        查找资源的地方:窗口,控件,容器,App.xaml,用户定义等。通常全局使用的资源可以在App.xaml中定义,只在几个窗口中使用的资源,可考虑在每个窗口中分别定义。充分平衡复杂性和重用性。

2.资源字典

        多个项目之间共享资源,可创建资源字典。资源字典只是Xaml文档,除了存储希望使用的资源外,不做其他任何事情。

2.1创建资源字典

// 需要通过添加→资源字典创建。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><ImageBrush x:Key="TileBrush" TileMode="Tile"ViewportUnits="Absolute" Viewport="0 0 32 32"ImageSource="/Images/爆炸.png" Opacity="0.3"/></ResourceDictionary>

2.2使用资源字典

// 假设有2个资源字典:AppBrushes.xaml和WizardBrushes.xaml<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="AppBrushes.xaml"/><ResourceDictionary Source="WizardBrushes.xaml"/></ResourceDictionary.MergedDictionaries><ImageBrush x:Key="GraphicalBrush1"/><ImageBrush x:Key="GraphicalBrush2"/></ResourceDictionary></Application.Resources>

2.3共享资源

方法1:复制并分发包含资源字典的xaml文件,这种最简单,但不能对版本进行控制。

方法2:将资源字典编译到单独的类库程序集中,并分发组件。

http://www.lryc.cn/news/362852.html

相关文章:

  • 容器化部署Pig微服务快速开发框架
  • Windows编程:图标资源、光标资源、字符串资源、加速键资源、WM_PAINT消息、绘图
  • 【2024 短剧0元轻资产创业风口】做自己的老板,做新媒体的领路人
  • Docker安装Bitbucket
  • FlyMcu串口下载STLINK Utility
  • CSS(盒子模型,定位,浮动,扩展)
  • AIGC如何改变人类生活20240529
  • 【python】成功解决“TypeError: ‘method’ object is not subscriptable”错误的全面指南
  • 若依 Spring Security 短信,扫码登录
  • Web 网页性能优化
  • JDBC-MySQL
  • MySQL经典练习50题(上)(解析版)
  • 每日一题33:数据统计之广告效果
  • 52、有边数限制的最短路
  • Spring boot实现基于注解的aop面向切面编程
  • MySQL之查询性能优化(四)
  • 定时任务详解
  • OnlyOffice DocumentServer 8.0.1编译破解版本(¥100)
  • Android 应用权限
  • MATLAB 匿名函数
  • Java 新手入门:基础知识点一览
  • 三维模型轻量化工具:手工模型、BIM、倾斜摄影等皆可用!
  • 小程序CI/CD之自动化打包预览并钉钉通知发布进程
  • C++使用QtHttpServer开发服务端Server的Http POST接口和客户端Client示例
  • 计算机基础(8)——音频数字化(模电与数电)
  • 手搓单链表(无哨兵位)(C语言)
  • 代码随想录算法训练营第18天|二叉树
  • 使用tftpd更新开发板内核
  • MySQL数据库整体知识点简述
  • 深入理解MySQL索引下推优化