¿Conseguir un ComponentResourceKey para trabajar?
Estoy creando una aplicación WPF con varios ensamblajes, y quiero compartir un diccionario de recursos entre ellos. Que requiere unComponentResourceKey. He construido una pequeña demostración para probar el CRK, y parece que no puedo hacerlo funcionar.
Mi demo tiene dos proyectos, un proyecto WPF llamadoManifestación, y un DLL llamadoComún. losComún proyecto tiene una carpeta llamadaTemas. Contiene mi diccionario de recursos,generic.xaml. Aquí está el texto del diccionario de recursos:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Common" >
<SolidColorBrush
x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:SharedResources}, ResourceId=RedSolidBrush}"
Color="Red"/>
</ResourceDictionary>
Común también contiene una clase llamadaRecursos compartidos.cs. Contiene una propiedad para hacer referencia al recurso Brush en el diccionario:
public static ComponentResourceKey RedSolidBrush
{
get { return new ComponentResourceKey(typeof (SharedResources), "RedSolidBrush"); }
}
Finalmente, la ventana principal en miManifestación proyecto hace referencia al recurso de pincel para rellenar un rectángulo:
<Window x:Class="ComponentResourceKeyDemo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:res="clr-namespace:Common;assembly=Common"
Title="Window1" Height="300" Width="300">
<Grid>
<Rectangle Height="100" Width="100" Stroke="Black" Fill="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type res:SharedResources}, ResourceId=RedSolidBrush}}" />
</Grid>
</Window>
No puedo encontrar la razón por la que no está funcionando. Se compila bien en VS 2008 y Blend, pero el recurso no se invoca. La única pista que tengo es un mensaje de error en Blend:
The Resource "{ComponentResourceKey ResourceId=RedSolidBrush, TypeInTargetAssembly={x:Type res:SharedResources}}" could not be resolved.
¿Alguna idea de por qué esto no está funcionando? Gracias por tu ayuda.