x中的(x)是什么:名称在Silverlight XAML标记中的含义是什么?

时间:2011-01-26 15:26:04

标签: silverlight

我们在TextBlockGrid中看到了一些属性:

<TextBlock x:Name="TextBlock1" ...

为什么我们要包含这个(x)?为什么我们不说:

<TextBlock Name="TextBlock1" ...

我的意思是,我们已经在这个TextBlock的定义范围内,对吗?

必须有这样的理由。

提前致谢。

2 个答案:

答案 0 :(得分:6)

作为Gabe答案的延伸,x:姓名是附属财产。附加属性与标准属性不同,因为它们(通常)未在使用它们的控件上定义。例如,TextBlock控件没有x:Name属性 - 相反,此属性在别处(在XAML命名空间中)定义,并且“附加”到TextBlock控件以实现它的行为。它说“我想使用可以在XAML命名空间中找到的Name附加属性。”当然,为了使事情复杂化,TextBlock控件有一个Name属性(它在Silverlight 2中不常用,因此你需要改为使用x:Name附加属性。但它们也做同样的事情。

附加属性的另一个(更容易理解)示例是Grid.Row。您可以在TextBlock控件上使用此属性来指定控件应在Grid中显示的行,即使它未在该控件上定义(Grid控件定义它)。 TextBlock只是将该属性附加到自身,该属性将自身与该行为相关联。这最初是一个令人困惑的概念,但非常强大且有用。有关附加属性的更多信息,请访问:http://msdn.microsoft.com/en-us/library/cc265152(VS.95).aspx

希望这会有所帮助......

克里斯

答案 1 :(得分:4)

这是名称空间前缀。

示例1:

您应该在xaml页面上看到类似的内容:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

其中声明x前缀引用xaml名称空间。

示例2:

您可以通过注册命名空间并为其指定前缀来加载您自己的用户控件。

xmlns:mycontrols="clr-namespace:MyControls.Namespace;assembly=MyAssembly"

然后我们在这里使用前缀来使用此命名空间中的一个控件。

<mycontrols:MyControl />