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;
  • 優勢:便於程序的國際化、本地化(方便切換顯示的語言)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM