Это вряд ли будет веществом StaticResource/DynamicResource. Статические и динамические см для поиска стратегии, а не стратегии удержания:
StaticResource означает «смотреть на ресурс один раз, а затем продолжать использовать то же значение.»
DynamicResource означает «искать источник каждый раз, когда это необходимо, в случае значение изменилось».
Что вы делаете поэтому звучит правильно: использовать StaticResource для неизменных ресурсов, таких как DataTemplates (и резервного DynamicResource для ресурсов, которые могут изменяться, например, системы щеток, которые могут измениться, если пользователь изменяет цветовую схему системы). Выделение DataTemplate с помощью ссылки StaticResource будет стоить не больше памяти, чем выделение его с помощью ссылки DynamicResource, а долгосрочный будет дешевле, потому что WPF не должен продолжать возвращаться и переоценивать ссылку.
Что более вероятно, что ваш шаблон сам делает что-то, что при применении шаблона (созданного экземпляром в элементе данных) выделяет память (или опосредованно выделяет память) негерметичным способом. Одна из противоречивых причин, которые я видел для этого, заключается в том, что шаблон использует эффекты растрового изображения старого стиля. Другое дело, если шаблон вызывает код, за которым происходит перехват обработчиков событий. Но ни один из них, скорее всего, не будет затронут тем, как вы ссылаетесь на ресурс шаблона.
WPF был разработан для Longhorn, а не для Vista. WPF также предшествует Windows Vista, поскольку он официально вышел с Visual Studio 2005, который вышел за год до Windows Vista. WPF основан на DirectX 9 (он по-прежнему даже в Windows 10 вам нужно перепрыгнуть через обручи, чтобы взаимодействовать с DirectX 10 и 11, а DX12 - из-за принципиально другого дизайна). – Dai