WPF程序级资源


一、WPF支持程序级资源(也称为二进制资源),和对象级资源。

 

 二、程序级资源 之 外部文件

  • 为什么要将外部文件转成程序资源:因为外部文件与程序主体分离,有可能丢失或者损坏。所以编译器允许我们把外部文件编译进程序主体,成为程序主体不可分割的一部分。

  • 添加方式:程序级资源可以添加图片、音频、视频等文件,添加方法是仅需简单的将其加入项目即可。
  • 访问方式:

  ① 完整的Pack URI路径:pack://application,,,[/程序集名称;][可选版本号;][文件夹名称/]文件名称 

  ② 因为 pack://application,,,一般可以省略,而[/程序集名称;][可选版本号;]常使用缺省值,故缩略的写法:[文件夹名称/]文件名称

  注:Pack URI使用正斜线(/)表示路径

  • 使用方式:

  ① XAML中使用资源:

1 <Image Source="Resources/Img/alarm_bone.png" Width="65" Height="65"/>
2 <Image Source="pack://application:,,,/Resources/Img/alarm_bone.png" Width="65" Height="65"/>

  ② 后台代码中使用资源:

1 Uri imgUri = new Uri(@"Resources/Img/alarm_bone.png",UriKind.Relative);
2 Uri imgUri = new Uri(@"pack://application:,,,/Resources/Img/alarm_bone.png",UriKind.Absolute);
3 img.Source = new BitmapImage(imgUri);

注:使用完整写法意味着绝对路径,代表根目录的/不能省略,绝对路径的UriKind必须是Absolute;

    使用缩略写法意味着相对路径,代表根目录的/可以省略,相对路径的UriKind必须是Relative。

三、程序资源 之 资源文件

  程序级资源除了图片、音频文件之外,还可以添加的资源是字符串,利用程序中的Properties名称空间中的Resource.resx资源文件。

  • Resource.resx文件内容是键值对的形式;

  • 为了让编译器能够访问这个类,一定把Resource.resx的访问级别由Internal改为Public;

  • Properties名称空间中的各个文件:  

  1. AssemblyInfo.cs:查看软件的版本信息

  2. Resource.resx:资源文件,里面定义了你程序需要的字符串

  3. Resources.Designer.cs:根据resx的内容,自动生成的C#后台代码

  4. Setting.settings:可以编写属性、方法;通常用于窗口的某些设置、绑定

  5. Setting.Designer.cs:根据settings的内容,自动生成的C#后台代码

  • 使用方式

  ① XAML中使用资源文件

1 <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
2         <TextBlock x:Name="txtblock" Text="{x:Static prop:Resources.UserName}"/>
3 </StackPanel>

  注:Resource.resx经过编译变成Properties名称空间中的Resource类,那么就可以使用x:Static标签扩展来访问资源(因为XAML中是不能编写逻辑代码的,所以使用x:Static来引用对应xaml.cs文件中写的公共静态属性值(或字段));Properties名称空间映射到XAML的命名空间是prop

  ② C#后台代码使用资源文件

1 this.txtblock.Text = Properties.Resources.Password;
  • 优势:便于程序的国际化、本地化(方便切换显示的语言)

文章来源:https://www.cnblogs.com/LXLR/p/15648528.html

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理
下一篇:记一次 .NET 某化妆品 webapi 卡死分析
评论列表

发表评论

评论内容
昵称:
关联文章

WPF程序资源
WPF对象资源
WPF_15_格式化绑定的数据
百亿数据 分库分表 后怎么分页查询?
IIS程序池回收配置
业务模块中添加并引用静态资源
dotnetCampus.UITest.WPF 一个支持中文用例的界面单元测试框架
程序测试
走进WPF之MVVM完整案例
如何定位程序占用内存过大问题-程序内存/CPU占用分析
[WPF] 实现 WPF 的 Inner Shadow
WPF学习笔记(四):AvalonEdit 代码高亮编辑控件专题
百亿数据 分库分表 后怎么分页查询?
VS制作C#程序windows安装程序
微信小程序-固定图片长宽比例
Python暂停程序执行
EFCore数据库提供程序
WPF 使用 Silk.NET 进行 DirectX 渲染入门
Windows服务程序开发
记一次 .NET 某妇产医院 WPF内存溢出分析

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码