我尝试使用 XSL 制作一个 XAML 文件,我需要的一件事是为 100 个文本块设置一个唯一名称。我在 for-each 循环中创建 Textblocks(它有效,所有元素都被创建),然后尝试使用 position() 给每个循环一个唯一的名称:
<xsl:for-each select="//value">
<xsl:element name="TextBlock">
<xsl:attribute name="x:Name" select="'number_txt_',position()"/>
<xsl:attribute name="Grid.Row" select="position()+2"/>
<xsl:attribute name="Grid.Column" select="0"/>
<xsl:attribute name="Text" select="./@number"/>
<xsl:attribute name="FontSize" select="20"/>
<xsl:attribute name="Foreground" select="'Ivory'"/>
<xsl:attribute name="HorizontalAlignment">
<xsl:value-of select="'Center'"/>
</xsl:attribute>
<xsl:attribute name="VerticalAlignment">
<xsl:value-of select="'Center'"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
然而,这给了我这个:
<TextBlock x:Name="number_txt_ 1" Grid.Row="3" Grid.Column="0" Text="1" FontSize="20"
Foreground="Ivory"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<TextBlock x:Name="number_txt_ 2" Grid.Row="4" Grid.Column="0" Text="2" FontSize="20"
Foreground="Ivory"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
等等所有的TextBlocks。注意“number_txt_”和数字之间的空格。
我想在 C# silverlight 项目中使用这个文件,但这不允许在 ax:Name 中使用空格,也不允许单个数字(我只用计数器尝试过,不起作用)。有没有人有任何想法?我知道你们中的一些人会建议一个柜台,但我对此知之甚少。感谢您花时间阅读我的问题,并希望您能想到一个解决方案。