如何在项目的各个部分有效地使用资源字典

Ven*_*kat 5 c# wpf optimization static resourcedictionary

我在许多转换器中使用资源字典(相同的字典)作为局部变量.

var DeignerDictionary = new ResourceDictionary
{
  Source = new Uri(path)
};
Run Code Online (Sandbox Code Playgroud)

每次我创建一个新实例并且应用程序中的内存非常高.

然后我将资源字典移动到一个静态字段,我正在重用字典,但样式没有正确呈现.

public class resourceDictionaryProvider{
    public readonly ResourceDictionary StaticDictionary =
    new ResourceDictionar {Source = new Uri(path)};
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我做错了,请提供您的建议.

将ResourceDictionary更改为仅静态后出现此问题.但以下代码工作正常.

public class resourceDictionaryProvider{
    public static readonly ResourceDictionary StaticDictionary =
    new ResourceDictionar {Source = new Uri(path)};
}
Run Code Online (Sandbox Code Playgroud)

现在我正在为resourceDictionaryProvider类创建一个实例,它工作正常,但我不想创建实例所以只有我已经将它更改为静态.

这里的static关键字有什么问题?

jes*_*ter 3

这是 WPF ResourceDictionaries 的一个众所周知的问题。解决方案是自行实现 SharedResourceDictionary 构造,以防止每次使用时重新实例化资源。看一下这个链接:WPF SharedResourceDictionary,了解 SharedResourceDictionary 构造的出色实现。(所有功劳归作者所有)