titulo longitud hacer etiqueta ejemplos cual crear como buen .net silverlight xaml code-behind resourcedictionary

.net - longitud - Error xClassNotDerivedFromElement al agregar código detrás del diccionario de recursos en Silverlight



longitud title (3)

Necesito agregar el código detrás de la clase al Diccionario de recursos como se describe en esta pregunta . (Sé que esto no es una buena práctica, pero debería funcionar en función de los comentarios de la pregunta vinculada). Me estoy refiriendo al código con el atributo x: Class:

XAML (archivo separado del diccionario de recursos):

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="MyNamespace.MyStandardResources"> ... </ResourceDictionary>

CÓDIGO:

using System.Windows; namespace MyNamespace { public partial class MyStandardResources : ResourceDictionary { public MyStandardResources() { InitializeComponent(); } //... } }

Esto causa la excepción del analizador de tiempo de ejecución:

Error interno del analizador: Object writer '' xClassNotDerivedFromElement ''. [Línea: xxx Posición: xxx] en System.Windows.Application.LoadComponent.

Los recursos están incluidos en App.xaml con la etiqueta ResourceDictionary.MergedDictionaries.


¿Estás tratando de utilizar este ResourceDictionary como un valor de origen de un diccionario fusionado? Si es así, eso no es compatible. Obtiene ese error xClassNotDerivedFromElement, que es una forma extraña de indicarlo, pero aquí está el motivo: el valor del atributo Fuente se traduce de una manera que hace referencia al XAML como XAML, no como una clase. El analizador XAML abre ese XAML como una acción de carga pura sin beneficio de ninguna precompilación, y no puede conciliar la clase x: en ese momento.


La clase x: está restringida para diccionarios fusionados en App.xaml. En su lugar, debe usar su clase definida como código en los recursos de la aplicación:

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="MyNamespace.App" xmlns:view="clr-namespace:MyNamespace"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <view:MyStandardResources /> .... </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>


Es una pena que crear el código subyacente para un diccionario de recursos ahora signifique que no puede crear un ResourceDictionary usando el URI para el xaml.

Eliminé mi código de nuevo, pero aún creé el ResourceDictionary en código usando la respuesta de esta pregunta + y + respuesta

Básicamente, solo crea un ResourceDictionary vacío y establece su Source en el código xaml uri.

Para mí, esto funcionó mejor porque significa que cualquier persona puede seguir haciendo referencia al diccionario de recursos si así lo desea, y hacerlo de la manera "esperada".