Вряд ли это будет StaticResource / DynamicResource. Статические и динамические относятся к стратегиям поиска, а не стратегиям хранения:
StaticResource означает "искать
один раз, затем просто продолжайте использовать
то же значение. "
DynamicResource означает «искать
ресурс каждый раз, когда это необходимо, в
case значение изменилось. "
То, что вы делаете, поэтому звучит правильно: используйте StaticResource для неизменных ресурсов, таких как DataTemplates (и резервируйте DynamicResource для ресурсов, которые могут изменяться, например, системных кистей, которые могут измениться, если пользователь изменяет цветовую схему системы). Выделение DataTemplate через ссылку StaticResource будет стоить не больше памяти, чем выделение его через ссылку DynamicResource, и в долгосрочной перспективе это будет дешевле, поскольку WPF не нужно постоянно возвращаться и переоценивать ссылку.
Что более вероятно, так это то, что сам ваш шаблон делает что-то, что, когда шаблон применяется (создается для элемента данных), выделяет память (или косвенно вызывает выделение памяти) с утечкой. Одна нелогичная причина, которую я видел, заключается в том, что шаблон использует растровые эффекты в старом стиле. Другой случай, если шаблон вызывает программный код, который подключает обработчики событий. Но ни один из них, вероятно, не будет затронут тем, как вы ссылаетесь на ресурс шаблона.