Obtendo um ComponentResourceKey para trabalhar?
Eu estou construindo um aplicativo WPF com vários assemblies e quero compartilhar um dicionário de recursos entre eles. Isso requer umComponentResourceKey. Eu construí um pequeno demo para testar o CRK, e não consigo fazê-lo funcionar.
Minha demonstração tem dois projetos, um projeto do WPF chamadoDemonstraçãoe uma DLL chamadaComum. oComum projeto tem uma pasta chamadaTemas. Ele contém meu dicionário de recursos,generic.xaml. Aqui está o texto do dicionário 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>
Comum também contém uma classe chamadaSharedResources.cs. Ele contém uma propriedade para referenciar o recurso Brush no dicionário:
public static ComponentResourceKey RedSolidBrush
{
get { return new ComponentResourceKey(typeof (SharedResources), "RedSolidBrush"); }
}
Finalmente, a janela principal da minhaDemonstração projeto faz referência ao recurso de pincel para preencher um retâ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>
Não consigo encontrar o motivo pelo qual não está funcionando. Ele compila bem no VS 2008 e no Blend, mas o recurso não é invocado. A única pista que tenho é uma mensagem de erro no Blend:
The Resource "{ComponentResourceKey ResourceId=RedSolidBrush, TypeInTargetAssembly={x:Type res:SharedResources}}" could not be resolved.
Alguma idéia de por que isso não está funcionando? Obrigado pela ajuda.