x:Name中的(x)在Silverlight XAML标记中是什么意思?

x:Name中的(x)在Silverlight XAML标记中是什么意思?,silverlight,Silverlight,我们在TextBlock或Grid中看到如下属性: <TextBlock x:Name="TextBlock1" ... 是名称空间前缀 示例1: 您应该在xaml页面上看到类似的内容: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 它声明了引用xaml命名空间的x前缀 <mycontrols:MyControl /> 示例2: 您可以通过注册名称空间并为其提供前缀来加载自己的用户控件 xmlns:mycon

我们在
TextBlock
Grid
中看到如下属性:

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

是名称空间前缀

示例1:

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

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
它声明了引用xaml命名空间的x前缀

<mycontrols:MyControl />
示例2:

您可以通过注册名称空间并为其提供前缀来加载自己的用户控件

xmlns:mycontrols="clr-namespace:MyControls.Namespace;assembly=MyAssembly"
然后在这里,我们使用前缀来利用这个名称空间中的一个控件

<mycontrols:MyControl />

这是名称空间前缀

示例1:

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

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
它声明了引用xaml命名空间的x前缀

<mycontrols:MyControl />
示例2:

您可以通过注册名称空间并为其提供前缀来加载自己的用户控件

xmlns:mycontrols="clr-namespace:MyControls.Namespace;assembly=MyAssembly"
然后在这里,我们使用前缀来利用这个名称空间中的一个控件

<mycontrols:MyControl />

作为Gabe答案的扩展,x:Name是一个附加属性。附加属性与标准属性不同,因为它们(通常)没有在使用它们的控件上定义。例如,TextBlock控件没有x:Name属性,而是在其他地方(在XAML命名空间中)定义了该属性,并“附加”到TextBlock控件以实现其行为。它的意思是“我想使用可以在XAML命名空间中找到的Name-attached属性”。当然,让事情复杂化的是,TextBlock控件有一个Name属性(它在Silverlight 2中不常用,因此您需要使用x:Name-attached属性)。不过它们也做了同样的事情

附加属性的另一个(更容易理解)示例是Grid.Row。您可以在TextBlock控件上使用此属性来指定控件应显示在网格中的行,即使该控件未在该控件上定义(网格控件定义它).TextBlock只是将该属性附加到自身,这将自身与该行为相关联。最初这是一个令人困惑的概念,但非常强大和有用。有关附加属性的详细信息,请参见此处:

希望这有助于


Chris

作为Gabe答案的扩展,x:Name是一个附加属性。附加属性不同于标准属性,因为它们(通常)没有在使用它们的控件上定义。例如,TextBlock控件没有x:Name属性,而是在其他地方(在XAML命名空间中)定义此属性,并被“附加”到TextBlock控件以实现其行为。它表示“我想使用可以在XAML命名空间中找到的Name attached属性)。当然,更复杂的是,TextBlock控件有一个Name属性(它在Silverlight 2中不常用,因此需要使用x:Name-attached属性)。不过他们也做同样的事情

附加属性的另一个(更容易理解)示例是Grid.Row。您可以在TextBlock控件上使用此属性来指定控件应显示在网格中的行,即使该控件上未定义该行(网格控件定义该行)。TextBlock只是将该属性附加到自身,从而将自身与该行为相关联。最初这是一个令人困惑的概念,但非常强大和有用。有关附加属性的详细信息可在此处找到:

希望这有助于


Chris

好的,(x)名称空间是在Silverlight的运行时内定义的吗?我刚刚更新了我的答案,您应该会看到在xaml simliar顶部声明的x是我提供的第一个示例,我看到这就像在代码隐藏中添加Using语句一样,对吗?或者这与标准化有关?是的,它类似于使用statementsOK的想法,因此(x)名称空间是在Silverlight的运行时内定义的?我刚刚更新了我的答案,您应该看到在我提供的第一个示例的xaml simliar顶部声明的x,这就像在代码隐藏中添加using语句一样,正确的?或者这与标准化有关?是的,它类似于使用语句的想法