私があなたの問題を正しく理解しているかどうか(またはあなたがまだこの問題を抱えている場合でも)わからないので、私はあなたに私のアプローチを伝えています、私は似たようなものが必要だったと思います:
- 外部アセンブリにテーマがあります(各テーマはリソースディクショナリとして表されます)。これは、実行時にクラスのリソースディクショナリを交換することで変更できます。
- リソースへのキーは別のアセンブリに保存されます
- テーマとリソースへのアクセスもまた別のアセンブリにあります
まず、必要なすべてのプロジェクトに必要なすべての参照があることを確認してください。
キーを格納するクラス:
public class CoreResourceKeys
{
public static readonly string BrushMyBrush = "MyBrush";
public static ComponentResourceKey Brush_MyBrush
{
get
{
return new ComponentResourceKey(typeof(CoreResourceKeys), CoreResourceKeys.BrushMyBrush);
}
}
}
私のテーマファイルは次のようになりました。
<ResourceDictionary xmlns=[...]
xmlns:resources="clr-namespace:AssemblyThatStoresTheKeys;assembly=CoreResourceKeys">
<SolidColorBrush x:Key="{ComponentResourceKey
TypeInTargetAssembly={x:Type resources:CoreResourceKeys},
ResourceId={x:Static resources:CoreResourceKeys.BrushMyBrush}}"
Color="DarkMagenta"/>
</ResourceDictionary>
そして、ブラシを使用したい場所のコントロール/ページは次のようになりました。
<UserControl x:Class=[...]
xmlns:resources="clr-namespace:AssemblyThatStoresTheKeys;assembly=CoreResourceKeys">
<TextBlock Background="{DynamicResource {x:Static resources:CoreResourceKeys.Brush_MyBrush}}" Text="The Shire"/>
そのブログ投稿は私を大いに助けました:MSDNサポートフォーラム-私のアセンブリからのスタイルのロード
それがあなたに役立つかどうかはわかりません。そうでない場合は、問題をより詳細に説明してください。