1. 程式人生 > 其它 >WPF中使用資源

WPF中使用資源

這節講一下如何在WPF中使用資源。

01
瞭解資源

在程式設計中,一個變數,一段程式碼,一張圖片,一段視訊或者音訊,這種可以拿來為我所用的東西就可以稱之為資源,一個讓人眼前一亮的程式,可能會使用到許許多多的資源。在WPF中,除了常用的根據路徑引用資原始檔,還為我們提供了管理資源資料的“物件級”資源,以及Resources.resx檔案,前者通過一個型別為ResouceDictionary的鍵值對物件來管理頁面中定義的資源,後者則是一個資源表,可以供我們全域性使用(當前並不是前者不能讓我們全域性使用,我們在App.xaml中定義的資源是可以被全域性使用的)。

02
"物件級"資源

我們可以在XAML頁面定義一些資源供我們使用,請先看如下程式碼:

在Window.Resources標籤內的ResouceDictionary中可以定義資源,通過key屬性指定資源的標識。此處我定義了key為btn_bgc字串資源,該資源被Grid中的Button.Content屬性使用,執行效果如下:

在Xaml中,我們可以使用標記擴充套件中的StaticResourceDynamicResource指令引用資源,該兩者的區別是,使用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檔案。