1.一般程式的資源可以分為四個等級:
- 資料庫中的資料相當于放在倉庫里
- 資源檔案里的資料相當于放在旅行箱里
- WPF物件資源里的資料相當于攜帶在背包里
- 變數中的資料相當于拿在手里
2.資源的查找順序是沿著邏輯樹向上一級控制元件查找,如果連頂級容器都沒有就會去程式級Application.Resources中查找;如果還是沒有找到則會拋出例外,
3.靜態資源(StaticResource)和動態資源(DynamicResource)
- 靜態資源是在程式載入記憶體時對資源的一次性使用,之后就不會再去訪問這個資源了,
- 動態資源是程式運行程序中仍然會區訪問資源,
<Window.Resources>
<TextBlock x:Key="str1" Text="海記憶體知己" />
<TextBlock x:Key="str2" Text="海記憶體知己" />
</Window.Resources>
<Grid>
<StackPanel>
<Button x:Name="btn1" Content="{StaticResource str1}" Height="60"/>
<Button x:Name="btn2" Content="{DynamicResource str2}" Height="60"/>
<Button x:Name="update" Margin="10" Width="120" Content="更新資源" Click="update_Click"/>
</StackPanel>
</Grid>
/// <summary>
/// 更新資源
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void update_Click(object sender, RoutedEventArgs e)
{
this.Resources["str1"] = new TextBlock() { Text = "天涯若比鄰" };
this.Resources["str2"] = new TextBlock() { Text = "天涯若比鄰" };
}
4.程式中添加二進制資源(程式級資源),這個在Net FrameWork體系下大家很熟悉了,就不做說明了
5.WPF中的Pack Uri,這里重點說明下《參考程式集的資源檔案》
編譯到參考的程式集中的資源檔案的 pack URI 使用以下授權和路徑:
-
授權:application:///,
-
路徑:編譯到所參考程式集內的資源檔案的名稱, 路徑必須符合以下格式:
AssemblyShortName{;版本] {;PublicKey]; 組件/路徑
-
程式集短名稱:所參考的程式集的短名稱,
-
;版本 [可選]:所參考的包含資源檔案的程式集的版本, 此部分在加載兩個或多個具有相同短名稱的參考程式集時使用,
-
;公鑰 [可選]:用于對參考程式集進行簽名的公鑰, 此部分在加載兩個或多個具有相同短名稱的參考程式集時使用,
-
;組件:指定所參考的程式集是從本地程式集參考的,
-
/路徑:資源檔案的名稱,包括其相對于所參考程式集的專案檔案夾根目錄的路徑,
-
下面的示例演示一個資源檔案的 pack URI XAML ,該資源檔案位于所參考程式集的專案檔案夾的根目錄中,
pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml
下面的示例演示一個資源檔案的 pack URI XAML ,該資源檔案位于所參考程式集的專案檔案夾的子檔案夾中,
pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml
下面的示例演示一個資源檔案的 pack URI,該 XAML 資源檔案位于所參考的特定于版本的程式集的專案檔案夾的根檔案夾中,
pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml
請注意,所參考的程式集資源檔案的 pack URI 語法只能與 application:///機構一起使用, 例如,WPF 不支持以下,
pack://siteoforigin:,,,/SomeAssembly;component/ResourceFile.xaml
5.2 標記中的絕對 Pack URI

5.3 標記中的相對 Pack URI

5.4 更多詳細說明請閱讀官方檔案:https://docs.microsoft.com/zh-cn/dotnet/desktop/wpf/app-development/pack-uris-in-wpf?view=netframeworkdesktop-4.8#pack-uri-resolution
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/317434.html
標籤:WPF
