Копия словаря ресурсов создается с каждым объектом WPF, который ее определяет. Определение статики из языка программирования здесь просто не применимо.
Вот пример:
Application
|-ResourceDictionary
|-Brush1
|-Brush2
|-CustomerWindow x3
|-ResourceDictionary
|-Brush3
|-Brush4
|-CustomerListControl x2
|-ResourceDictionary
|-Brush5
|-Brush6
В этом примере приложения у нас есть две кисти, определенные в ресурсе приложения, две кисти в CustomerWindow
и еще две в CustomerListControl
. CustomerWindow
имеет два экземпляра CustomerListControl
и три открытых окна.
Всего будут созданы следующие ресурсы:
Кисть1 - 1x (одно приложение)
Brush2 - 1x
Brush3 - 3x (три открытых окна)
Brush4 - 3x
Brush5 - 6x (три окна * два элемента управления на окно)
Brush6 - 6x
Если вас беспокоит использование ресурсов, вам следует определить ресурс на самом верхнем уровне. Таким образом, в этом сценарии, если все кисти определены на уровне приложения, будет только один экземпляр каждого независимо от того, сколько окон открыто.
Статья MSDN об оптимизации производительности WPF стоит прочитать.