WPF程序级资源

  • A+
所属分类:.NET技术
摘要

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

一、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资源文件。WPF程序级资源

  • 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;

  • 优势:便于程序的国际化、本地化(方便切换显示的语言)