Pregunta

este es un problema que surge regularmente cuando escribo Silverlight XAML. En este caso, he hecho un control de usuario VerticalTabStop (código adjunto) que tiene adjunta una información sobre herramientas. Instalé un par de mis controles de usuario, y luego obtengo la ventana de depuración y el siguiente error:

Line:52
Error: Unhandled Error in Silverlight 2 Application
Code: 2028
Category: ParserError
Message: The name already exists in the tree: AltLabel.
File:
Line: 0
Position: 0

Recibo una gran cantidad de estos mensajes cuando paso el mouse sobre los botones. ¿Alguna sugerencia de lo que estoy haciendo mal aquí?

Saludos

Nik


<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    x:Class="SLEntityPresenterWebPart.VerticalTabStop"
    d:DesignWidth="20" d:DesignHeight="27">

    <Grid x:Name="LayoutRoot">
        <StackPanel>
            <Canvas x:Name="TabStopCanvas" Height="27" Width="20">
                <ToolTipService.ToolTip>
                    <TextBlock x:Name="AltLabel" Text="Substitute me"/>
                </ToolTipService.ToolTip>
                <Image x:Name="IconImg" Canvas.Left="7" Canvas.Top="9" Width="26" Height="26" Source="Contact.png" Canvas.ZIndex="5" Margin="0,-9,0,0" RenderTransformOrigin="0.5,0.5">
                    <Image.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform ScaleX="0.85" ScaleY="0.85"/>
                            <SkewTransform/>
                            <RotateTransform/>
                            <TranslateTransform X="0"/>
                        </TransformGroup>
                    </Image.RenderTransform>
                </Image>
                <Image Source="stop.png" Margin="3,0,0,0"/>
            </Canvas>

        </StackPanel>
    </Grid>
</UserControl>
¿Fue útil?

Solución

Este es un error en Silvelight. La forma de solucionarlo es eliminar el atributo de Nombre en el TextBlock en la Información sobre herramientas.

Supongo que tiene el nombre allí por una razón, y que no poder referirse a este elemento desde el código será un problema para usted. Para solucionar esto, intente reemplazar la información sobre herramientas xaml con esto:

<ToolTipService.ToolTip>
    <ToolTip x:Name="AltLabel" Content="Substitute me" />
</ToolTipService.ToolTip>

Ahora puede obtener el texto haciendo AltLabel.Content. Si esto no resuelve su problema, hágamelo saber.

Otros consejos

Hay un error muy similar incluso en Silverlight 4. Si crea un control de usuario personalizado, por lo general:

<UserControl xmlns:MyNameSpace="clr-namespace:MyNameSpace" x:Class="MyNameSpace.MyClass" 
x:Name="userControl" ... />

Luego, si agrega 2 controles sin nombres al código xaml (con vista previa):

<MyNameSpace:MyClass ... />
<MyNameSpace:MyClass ... />

Habrá una excepción " El nombre ya existe en el árbol: userControl " ;. Ocurre porque Silverlight no puede encontrar el nombre (sin nombre [MyClass]) y busca el UserControl donde encuentra " userControl " dos veces.

Una de las soluciones es dar algunos nombres a los controles:

<MyNameSpace:MyClass x:Name = "MyControl1" ... />

O inicialice este control desde el código:

MyClass control = new MyClass();
SomeGrid.Children.Add(control);

Ayer estuve luchando con el mismo mensaje ... ParserError: el nombre ya existe en el árbol: blah

En mi caso, el problema fue que de alguna manera se agregó una referencia ... a sí mismo. (La DLL del proyecto en la carpeta bin / debug del proyecto es propia). Al eliminar esta referencia se solucionó el problema.

Parece que este mensaje de error es demasiado vago.

Intenta eliminar cualquier nombre como 'x: Nombre = " TabStopCanvas " 'en el panel de la pila, funcionó para mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top