質問

これは、Silverlight XAMLを作成するときに定期的に発生する問題です。この場合、ToolTipが添付されたユーザーコントロール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>
役に立ちましたか?

解決

これはSilvelightのバグです。この問題を回避するには、ツールチップでTextBlockのName属性を削除します。

理由はそこに名前があると思いますが、コードからこの要素を参照できないことが問題になると思います。そのための回避策として、ツールチップのxamlを次のように置き換えてみてください:

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

AltLabel.Contentを実行すると、テキストにアクセスできます。 これで問題が解決しない場合は、お知らせください。

他のヒント

Silverlight 4でも同様のバグがあります。 通常、カスタムユーザーコントロールを作成する場合:

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

次に、xamlコードに名前なしの2つのコントロールを追加する場合(プレビューあり):

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

例外があります&quot;この名前はすでにツリーに存在しています:userControl&quot;。これは、Silverlightが名前(名前のない[MyClass])を見つけることができず、&quot; userControl&quot;を見つけるUserControlを探すために発生します。二回。

解決策の1つは、コントロールにいくつかの名前を付けることです:

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

またはこのコントロールをコードから初期化します:

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

昨日、同じメッセージに苦労していました... ParserError-名前は既にツリーに存在します: blah

私の場合、問題はどういうわけか参照がそれ自体に追加されたことでした。 (プロジェクト内のプロジェクトのDLLは、bin / debugフォルダーを所有しています)。この参照を削除すると、問題が整理されます。

このエラーメッセージは曖昧すぎるようです。

'x:Name =&quot; TabStopCanvas&quot;のような名前を削除してみてください。 'スタックパネルで、それは私のために働いた。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top