残念ながら、これは、劣化が現れる場所がWPFエンジンの奥深くにあるため、相対的なパフォーマンスを直接比較することが非常に難しい場合です。WPFの初期には、StaticResourceの使用は推奨された標準のパフォーマンス調整の変更の1つであり、組織内ではかなり厳密にそれに従い、他の人にも推奨する傾向がありました。Blendが設計時に他のファイルからリソースを適切にレンダリングするのに役立ったとしても、Blendがすべてを動的に実行することに本当に腹を立てました。
個人的な経験だけでなく、MicrosoftのBlendチームの人々からのフィードバックもあり、時間の経過とともにこれに対する私の見方は変わりました。ご存知かもしれませんが、Blendは完全にWPFで記述されており、アプリケーションの実行中にオンザフライで切り替えることができる完全な代替テーマ(Light)があります。これが可能なのは、ほとんどすべてのスタイリングにDynamicResourceを使用しているためです。彼らによると、これは実際には実際のパフォーマンスの問題を引き起こしませんでした。Blendがおそらく存在する中で最も広く使用されているWPFアプリケーションであることを考えると、私は彼らの見解にかなりの重みを与える傾向があります。
考慮すべきもう1つのことは、DynamicResourceの実際の有用性です。その場でスタイルを変更する機能はその一部ですが、リソース階層を構築する際の柔軟性により、共有スタイルの管理がはるかに簡単になります。StaticResource参照が指定したリソースが階層の別のブランチにロードされるため、実行時にStaticResource参照が爆発する状況に遭遇したと確信しています。
明らかに、StaticResourceは、適切なタイミングで使用可能になることがわかっている特定のキーを指すのに非常に役立ちます。XAMLを手書きするとき、私はまだそれをいつも使う傾向があります。ただし、デザイナーにBlendでXAMLを生成させることで得られる生産性を考えると、パフォーマンスを少しでも向上させることは、すべてを静的として手動で維持するオーバーヘッドの価値がない可能性があります。