このページから、私は読んだ:
アプリケーションがカスタムコントロールを使用し、ResourceDictionary(またはXAMLリソースノード)でリソースを定義する場合は、アプリケーションまたはウィンドウオブジェクトレベルでリソースを定義するか、カスタムコントロールの既定のテーマでリソースを定義することをお勧めします。カスタムコントロールのResourceDictionaryでリソースを定義すると、そのコントロールのすべてのインスタンスにパフォーマンスへの影響があります。
OK ...これで、次のリソースを定義するUserControlができました。
<UserControl ...>
<UserControl.Resources>
<Namespace:ImagesConverter x:Key="ImagesConverter" ...
<Storyboard x:Key="AnimationHide" ...
</UserControl.Resources>
したがって、MSDNチュートリアルにあるように、実行時に100以上のインスタンスを作成しているため、これらのリソースをMainWindowまたはAppレベルに移動することをお勧めします。それらを移動するのに最適な場所はどこですか?MainWindowレベル、アプリレベル、またはリソースファイル?なぜ?
そして...どうすれば新しい場所からそれらを使用できますか?UserControl内に次のコードがあるとしましょう。
m_AnimationHide = (Storyboard)Resources["AnimationHide"];
それらの変更を反映するためにどのように変更する必要がありますか?代わりに、次のUserControl XAMLスニペットをどのように変更する必要がありますか?
Source="{Binding Source={x:Static Properties:Resources.MyImage}, Converter={StaticResource ImagesConverter}}"