不止一次加载WPF资源

时间:2018-04-17 11:59:07

标签: wpf winforms xaml

我在Windows XP和Windows 7/10用户的WPF和WinForms中工作(由于XP而导致的.NET 4.0)。

某些WPF Windows用作没有WPF Application类/ App.xaml文件的旧版WinForms应用程序的对话框。

这本身不是问题,但我发现我必须在WinForms / WPF情况下的用户控件/窗口中的资源字典中声明样式,由于App.xaml,这在普通WPF应用程序中通常是不必要的

我的问题是WPF是否检测到相同的资源被加载两次(在纯WPF应用程序中,例如UserControl和App.xaml)并且在不受我干扰的情况下处理/管理它,或者我是否必须尝试确保我只声明资源字典一次?

非常感谢。

2 个答案:

答案 0 :(得分:2)

答案是否定的。

如果您将资源字典作为usercontrol的资源加载,那么usercontrol的每个实例都意味着它在内存中使用的任何资源的另一个实例。 如果这将成为一个问题,那么你需要做点什么 您可能只是能够实例化一个应用程序对象并使用它来存储您的资源.Application.Current.Resources毕竟只是引用当前的应用程序。取决于您的应用程序的确切运作方式。

答案 1 :(得分:0)

如果尝试两次加载相同的资源字典,应用程序将抛出运行时错误。 但是,如果您只定义资源字典中已存在的样式,那么在用户控件中,即基本上两个在资源字典中具有相同名称的样式,在用户控件中另一个样式,则不会引发任何错误。用户控件中的样式将具有更高的优先级。