2009-11-13 18 views
8

sigo obteniendo un error extraño dentro de mi archivo App.xaml:'Elemento ya es el hijo de otro elemento de' error en Silverlight App.xaml

elemento ya es el hijo de otro elemento.

archivo Mi App.xaml se ve así: Se informa

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      x:Class="Celerior.Annapurna.SL.App"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="ProvisiorResourceDictionary.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

El error para toda la ResourceDictionary elemento (de las líneas 5 a 9).

ProvisiorResourceDictionary.xaml contiene una cantidad de estilos y plantillas. Nada emocionante en mi opinión.

¿Alguien sabe lo que está mal?

Saludos cordiales,

Ronald Wildenberg

+0

Puede proporcionar otra información. Qué hay en ProvisorResourceDictionary.xaml. ¿También se usa en otro lado? ¿Hay algunos componentes de fabricación casera haciendo cosas extrañas en sus constructores o procedimientos de establecimiento de propiedades? – AnthonyWJones

+0

He agregado algo de información a mi pregunta sobre el contenido de ProvisiorResourceDictionary. Contiene solo estilos y plantillas. Tal vez intente eliminar el código pieza por pieza para ver si eso ayuda. –

+0

Tengo una idea. Tengo un DataTemplate que agrego a dos diferentes selectores de plantilla (clases personalizadas que detectan la plantilla para usar en función de cierta información). ¿Es imposible reutilizar DataTemplate? –

Respuesta

6

he encontrado la causa del problema mismo, gracias a los consejos proporcionados en el comentario de AnthonyWJones.

Parece que todo dentro de un Silverlight resource dictionary debe ser compartible. La razón es que los elementos dentro de un diccionario de recursos (probablemente) se agregarán en varias ubicaciones en la jerarquía de control.

Tenía dos elementos dentro de mi diccionario de recursos que no se podían compartir.

EDITAR: En WPF, puede utilizar el atributo x:Shared en los objetos dentro de un diccionario de recursos para forzar WPF para crear una nueva instancia para cada recuperación de recursos. Lamentablemente, Silverlight does not support este atributo.

+3

CONSEJO: si no está seguro de qué elementos causan este error, simplemente cree un segundo Resources2.xaml al que hace referencia App.xaml y muévalo sobre algunos archivos. asegúrate de recompilar completamente. esto debería permitirle determinar qué recursos no son compartibles y causar el problema –

+3

Tuve este error y resultó que uno de nuestros desarrolladores puso 'x: Name' en lugar de' x: Key' en uno de los elementos. – bendewey

3

Probablemente NO haya una respuesta a esta pregunta pero otra razón común por la que puede obtener este "Elemento ya es el elemento secundario de otro elemento". error es si está tratando de cargar un recurso, como una imagen y tiene el nombre de archivo incorrecto.

IE especialmente se queja de esto.

<Image ToolTipService.ToolTip="Email customer" 
     Source="../images/FILE-THAT-DOESNT-EXIST.png"></Image> 

Sin embargo puesto que esto está relacionado con los recursos que podría posiblemente ser un escenario en el que esto sería una respuesta a esta pregunta :-)

1

tuve el mismo problema, cuando me registré mi Styles.xaml archivo, tenía algunos elementos con el mismo nombre, cambié el nombre de los elementos y los hice únicos, y el problema se resolvió :)

0

Parece que esto también se oocurra si tratas de poner un Guión gráfico con una clave dentro de un ResourceDictionary , en lugar de ponerlo dentro de ControlTemplate

Esto se debe a que Storyboard son objetos con estado y no se pueden reutilizar (rastrean si se han iniciado, se han detenido, etc.)

0

El consejo de @Simon_Weaver en la respuesta

TIP: si no está seguro de qué elementos están causando este error, simplemente crear una segunda Resources2.xaml referencia el App.xaml y mover sobre algunos archivos. asegúrate de recompilar completamente. esto debe permitirá determinar qué recursos son no compartible y causando el problema

me llevó a encontrar este artículo, el primero me quita realidad; era un objeto de ruta no utilizado:

<Path x:Key="RightArrowPath" .. /> 

como el culpable. Accroding a Resource Dictionaries #Objects for Resource Dictionary Usage, no muestra un Path como un elemento que se puede compartir.

Cuestiones relacionadas