現在、アプリケーションに動的に適用できるスタイルとテンプレートの辞書の作成に取り組んでいます。この「新しく必要な」動的動作の前に、App.xamlにマージした、スタイル付きコントロールごとに1つずつ、いくつかのリソースディクショナリがありました。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ColorsDictionary.xaml"/>
<ResourceDictionary Source="ControlsTemplatesDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
ここで、アプリケーションのスタイルを設定したいので、以前のすべてのリソースを「MyFirstTemplates」という新しいリソースにマージし、この辞書のみをApp.xamlに追加することにしました。
新しい辞書「MyFirstTemplates.xaml」:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">"
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ColorsDictionary.xaml"/>
<ResourceDictionary Source="ControlsTemplatesDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
新しいApp.xaml:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyFirstTemplates.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type Window}"/>
</ResourceDictionary>
</Application.Resources>
注:ウィンドウの既定のスタイルは、WPF 4のバグを修正することです。「マージされたディクショナリを、マージされたディクショナリに追加する」を参照してください。
この変更を行ったため、「ColorsDictionary.xaml」のカラーリソースを「ControlsTemplateDictionary.xaml」のStaticResourceとして使用できなくなりました。これらのファイルをapp.xamlにマージするように戻すと、すべてが機能します。それを機能させるには、 DynamicResourceのこれらのStaticResourceを変更する必要があります。なぜこれが機能しなくなったのか分かりますか?
ありがとうございました :-)