这是我编写Silverlight XAML时经常出现的问题。在这种情况下,我已经创建了一个附加了ToolTip的usercontrol VerticalTabStop(附加代码)。我实现了几个用户控件,然后我得到了调试窗口并出现以下错误:
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
当我将鼠标悬停在按钮上时,我收到了大量这些消息。对我在这里做错了什么建议?
干杯
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>
答案 0 :(得分:10)
即使在Silverlight 4中也存在非常类似的错误。 如果您创建自定义用户控件,通常是:
<UserControl xmlns:MyNameSpace="clr-namespace:MyNameSpace" x:Class="MyNameSpace.MyClass"
x:Name="userControl" ... />
然后,如果您向xaml代码添加2个没有名称的控件(带预览):
<MyNameSpace:MyClass ... />
<MyNameSpace:MyClass ... />
将出现异常“树中已存在名称:userControl”。之所以会发生这种情况,是因为Silverlight无法找到名称(未命名的[MyClass])并查找UserControl,它会在其中找到“userControl”两次。
其中一个解决方案是给控件命名:
<MyNameSpace:MyClass x:Name = "MyControl1" ... />
或者从代码
初始化此控件MyClass control = new MyClass();
SomeGrid.Children.Add(control);
答案 1 :(得分:5)
这是Silvelight中的一个错误。解决此问题的方法是在工具提示中删除TextBlock上的Name属性。
我认为你有一个名字是有原因的,而且无法从代码中引用这个元素对你来说是一个问题。为解决这个问题,请尝试使用以下方法替换工具提示xaml:
<ToolTipService.ToolTip>
<ToolTip x:Name="AltLabel" Content="Substitute me" />
</ToolTipService.ToolTip>
现在,您可以通过AltLabel.Content来查看文本。 如果这不能解决您的问题,请告诉我。
答案 2 :(得分:1)
在我的情况下,问题是某种方式的参考被添加到了自身。 (项目中的项目的DLL拥有bin / debug文件夹)。删除此引用可以解决问题。
似乎此错误消息太模糊。
答案 3 :(得分:1)
尝试在堆栈面板中删除任何名称,例如'x:Name =“TabStopCanvas”,它对我有用。