wpf custom-controls resourcedictionary generic.xaml

WPF-El recurso no se carga desde Generic.xaml



custom-controls resourcedictionary (2)

Temas / Generic.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="WPF Commons;component/Controls/Layout/Foo/FooItem.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary>

Controls / Layout / Foo / FooItem.xaml:

<Style TargetType="{x:Type l:FooItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type l:FooItem}"> <Border> <ContentPresenter ContentSource="Header" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style>

Si copio todo el estilo en mis recursos de control de usuario, funciona bien. Pero, si no lo hago, el control de usuario se muestra vacío. En Expression Blend 4, hice clic derecho y elegí Edit Template >, pero no me permite seleccionar Edit a Copy... que me lleva a creer que algo está muy mal y que el Generic.xaml no se carga correctamente. Me imagino que es Generic.xaml porque si elimino la llamada de MergedDictionary y copio / pego el estilo xaml directamente en Generic.xaml, todavía no funciona.


Copiando desde mi blog: http://zoomicon.wordpress.com/2012/06/10/what-to-do-if-generic-xaml-doesnt-get-loaded-for-wpf-control/

al inicio de Properties / AssemblyInfo.cs que necesita (tenga en cuenta que no se usa / necesita en Silverlight): use System.Windows;

...

Tenga en cuenta que si el proyecto no muestra un nodo Propiedades en el Explorador de soluciones, debe crear un nuevo proyecto utilizando la plantilla correcta (para un control personalizado de WPF) o hacer clic con el botón derecho en el proyecto, seleccionar Propiedades y luego presionar la tecla Ensamblar. Haga clic en el botón Información e ingrese algunos valores ficticios, luego haga clic en Aceptar para crear el nodo Propiedades (que también crea una subcarpeta de propiedades y un archivo AssemblyInfo.cs).

Puede expandir (desplegar) el nodo Propiedades especiales en el explorador de soluciones y luego abrir AssemblyInfo.cs y agregar las cosas anteriores si faltan.


Supongo que alteró su archivo AssemblyInfo.cs y modificó (o eliminó) la siguiente línea:

[assembly: ThemeInfo( ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located //(used if a resource is not found in the page, // or application resource dictionaries) ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located //(used if a resource is not found in the page, // app, or any theme specific resource dictionaries) )]

Necesitas decirle a tu asamblea acerca de tu ThemeInfo. :)