一、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.uj5u.com/net/373682.html
標籤:.NET技术
