以编程方式添加到WPF中的Window.Resources

时间:2010-07-16 23:52:36

标签: c# wpf

有没有办法在Window级别而不是Application级别添加ResourceDictionary?

我看到很多这样的例子:

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

但是,没有像我期望的那样,例如:

Window.Resources.MergedDictionaries.Add(myResourceDictionary);

提前致谢,

1 个答案:

答案 0 :(得分:7)

你做不到:

Window.Resources

但是,您可以执行:

this.Resources.MergedDictionaries.Add(myResourceDictionary);

Resources是FrameworkElement的一个属性,由Application和Window(以及WPF中的大多数其他用户界面类)共享。但是,它是一个实例属性,而不是静态属性,因此您需要使用特定实例的资源。当您键入“Window.Resources”时,您试图添加到“窗口”类型,而不是添加到特定窗口。

这适用于您的应用程序行,因为Application.Current返回应用程序的当前实例,因此您正在使用正确的特定实例(而不是类型)。