2010-07-16 77 views
4

有沒有方法可以在Window級別而不是應用程序級別添加ResourceDictionary?以編程方式添加到WPF中的Window.Resources

我看到的東西很多例子是這樣的:

Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); 

然而,沒有什麼像什麼,我會認爲會有,如:

Window.Resources.MergedDictionaries.Add(myResourceDictionary); 

在此先感謝,

回答

7

你不能這樣做:

Window.Resources 

然而,您可以

this.Resources.MergedDictionaries.Add(myResourceDictionary); 

Resources是FrameworkElement的的屬性,並通過應用程序和窗口(以及大多數其他用戶界面類在WPF)共享。但是,它是實例屬性,而不是靜態屬性,因此您需要使用特定實例的資源。當您鍵入「Window.Resources」時,您嘗試添加到「窗口」類型中,而不是添加到特定的窗口。

這適用於您的應用程序行,因爲Application.Current返回應用程序的當前實例,所以您正在使用正確的特定實例(而不是類型)。

+0

這正是我需要的,謝謝! – TheGeekYouNeed 2010-07-19 16:23:02

+0

如果我這樣做,是現在的資源引用DynamicResource而不是StaticResource? (我從窗口頁面自己的樣式,並把它們放到一個字典) – TheGeekYouNeed 2010-07-19 17:08:18

+0

@TheGeekYouNeed:是的,基本上。在編譯時它們不可能被解析,所以它們必須被動態地處理...... – 2010-07-19 18:04:21

相關問題