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