Frage

Das ist ein Problem, das regelmäßig auftritt, wenn ich Silverlight XAML schreiben. In diesem Fall habe ich einen Usercontrol VerticalTabStop (Code im Anhang) hergestellt, die eine Quick-Info angebracht hat. Ich instanziieren ein paar meiner Benutzersteuerelemente, und dann erhalte ich die Debug-Fenster und die folgende Fehlermeldung:

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

Ich bekomme eine Menge dieser Nachrichten, wie ich meine Maus über die Tasten schweben. Irgendwelche Vorschläge, was ich falsch mache hier?

Prost

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>
War es hilfreich?

Lösung

Das ist ein Fehler in Silvelight. Die Art und Weise, um es zu arbeiten, ist das Attribut Namen auf dem Textblock im Tooltip zu entfernen.

Ich nehme an, dass Sie den Namen es für einen Grund haben, und dass von Code auf dieses Element in der Lage zu beziehen sich nicht wird ein Problem für Sie sein. Als Arbeit um für das, versuchen, den Tooltip XAML mit diesem ersetzen:

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

Nun können Sie den Text erhalten, indem AltLabel.Content tun. Wenn dies Ihr Problem nicht lösen, lassen Sie es mich wissen.

Andere Tipps

Es ist sehr ähnlich Fehler auch in Silverlight 4. Wenn Sie benutzerdefinierte Usercontrol erstellen, in der Regel:

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

Wenn Sie dann fügen Sie 2 Kontrollen ohne Namen zu dem XAML-Code (mit Vorschau):

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

Es Ausnahme sein wird „Der Name ist bereits im Baum: Usercontrol“. Es tritt auf, weil Silverlight nicht den Namen (unnamed [MyClass]) und blickt auf die Usercontrol finden kann, wo es „Usercontrol“ zweimal findet.

Einer der Lösung ist es, einige Namen zu den Kontrollen zu geben:

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

oder diese Steuerung von Code initialisiert werden:

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

ich mit der gleichen Botschaft kämpfte gestern ... ParserError - Der Name existiert bereits im Baum: blah

In meinem Fall war das Problem, dass irgendwie eine Referenz hinzugefügt wurde ... an sich. (Die DLL des Projektes in den Projekten selbst ist / Debug-Ordner). Das Entfernen dieser Referenz das Problem aussortiert werden.

Es scheint, dass diese Fehlermeldung zu vage ist.

Versuchen Sie einen beliebigen Namen zu entfernen, wie 'x: Name = "TabStopCanvas"' in Stack-Panel, es für mich gearbeitet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top