WPF中使用资源
????這節講一下如何在WPF中使用資源。
01
了解資源
? ? 在編程中,一個變量,一段代碼,一張圖片,一段視頻或者音頻,這種可以拿來為我所用的東西就可以稱之為資源,一個讓人眼前一亮的程序,可能會使用到許許多多的資源。在WPF中,除了常用的根據路徑引用資源文件,還為我們提供了管理資源數據的“對象級”資源,以及Resources.resx文件,前者通過一個類型為ResouceDictionary的鍵值對對象來管理頁面中定義的資源,后者則是一個資源表,可以供我們全局使用(當前并不是前者不能讓我們全局使用,我們在App.xaml中定義的資源是可以被全局使用的)。
02
"對象級"資源
????我們可以在XAML頁面定義一些資源供我們使用,請先看如下代碼:
????在Window.Resources標簽內的ResouceDictionary中可以定義資源,通過key屬性指定資源的標識。此處我定義了key為btn_bgc字符串資源,該資源被Grid中的Button.Content屬性使用,運行效果如下:
????在Xaml中,我們可以使用標記擴展中的StaticResource和DynamicResource指令引用資源,該兩者的區別是,使用StaticResource,會在程序啟動時讀取一次資源數據,后續如果資源數據變動,引用者是不會知道的;而DynamicResource則是會多次讀取,動態更新。
????除了在Xaml中使用資源,我們也可以在代碼中通過Resoure對象獲取,請看如下代碼:
????從后臺代碼中,我們可以使用FindResource方法或訪問Resources對象通過索引器的方式獲取,但兩者還是有區別的,FindResource方法的查找面很廣,在App.Xaml中定義的資源,也會被找到,而Resources對象則是只會找本頁面定義的資源。
03
Resources.resx文件
????在項目的Properties下展開可以找到這個文件:
????雙擊打開后,是個列表,我們可以看到是個表格界面:
????左上角可以指定資源是string還是其它:
????默認情況下,該文件的訪問級別(Access Modifier)是Internal,也就是在代碼中可以訪問,一般來說,應該改為Pubilc,這樣在Xaml中也可以訪問。
????在代碼中獲取該資源如下:
????在Xaml中獲取該資源如下:
? ??在.NET 5版本中,默認去掉了Properties這個文件夾,但如果需要的話我們依然可以通過手動為項目添加Resources.resx文件。
總結
- 上一篇: MediatR 在.NET应用中的实践
- 下一篇: 如何实现 asp.net core 安全