0

在 Windows Phone xaml 页面中,某些元素具有x:Name

<TextBlock x:Name="PageTitle" Text="simple" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>

而其他人有名字

<TextBlock Name="tbSource" Height="30" HorizontalAlignment="Left" Margin="129,178,0,0"  Text="Source" VerticalAlignment="Top" Width="304" />

有什么区别 ?

4

2 回答 2

0

x:部分是命名空间别名。它告诉编译器属性存在的位置。在这种情况下,它指向 XAML 的默认命名空间。
Name属性是System.Object该名称空间中的一部分。
当您包含x:Name以标识Name在 XAML 中调用的属性时,您明确表示您指Name的是底层System.Object. 由于所有对象都继承自它,因此所有类都可以访问它。

为什么这有什么关系?
如果您覆盖了类中的 Name 属性,那么指定命名空间将允许您明确指出Name您所指的是哪个版本。
旁注:永远不会覆盖Name.

你用哪个有关系吗?
不,只要Name永远不会被覆盖,您需要参考它的特定版本。

无论您是否使用它,保持一致可能符合您的利益。大多数人都会这样做(就像 VS 在为您创建控件时一样),因此将它们保留在那里可能是最容易的。

于 2012-10-03T17:30:05.113 回答
0

不确定,但我认为 x:Name 元素可以通过它们的名称在代码中访问。例如 PageTitle.Text = "一些文本"。而“名称”只是元素的常规属性。另请参阅以下有关 x:Name 指令的文章。

于 2012-10-03T03:30:52.310 回答