Sam*_*yan 6 silverlight xaml silverlight-2.0 silverlight-3.0 silverlight-4.0
我是Silverlight的新手.
当我使用Visual Studio向我的xaml文件添加一些控件时,它使用Name属性设置控件名称,但也有x:Name.
是否存在差异以及何时使用它们?
谢谢.
Ant*_*nes 12
简单来说
是,有一点不同.底线是x:Name
可用于没有自己Name
属性的对象元素.
更长的解释
您只能Name
在表示实际具有Name
属性的对象的元素上使用.例如,任何衍生自的东西FrameworkElement
.
该x:Name
属性可被置于表示对象的任何元件上,无论的该对象是否实际上有一个Name
属性.如果对象确实有一个Name
属性,则值x:Name
将被分配给它,因此你不能兼得x:Name
,并Name
在相同的元素.
当对象具有Name
属性或x:Name
属性时,该属性的值与对象树中的对象条目相关联.通过对象树,a的FindName
方法FrameworkElement
可以找到一个对象. FindName
即使该对象不Name
具有自己的属性,因为它使用对象树中记录的名称,因此可以按名称查找对象.
a的自动生成代码UserControl
将包含具有Name
or x:Name
属性的任何元素的字段定义.该 InitialiseComponent
所生成方法将使用FindName
方法将值分配给这些字段.
例
上面的Xaml创建了两个LayoutRoot
类型Grid
和MyBrush
类型的字段SolidColorBrush
.如果你要改变x:Name="LayoutRoot"
,以Name="LayoutRoot"
将改变什么. Grid
有Name
房产.但是请尝试x:Name="MyBrush"
改为Name="MyBrush"
.这不起作用,因为SolidColorBrush
没有name属性.使用上面的Xaml,您可以像这样执行代码: -
public MainPage()
{
InitializeComponent();
MyBrush.Color = Colors.LightGray;
}
Run Code Online (Sandbox Code Playgroud)
打开定义InitializeComponent
并查看自动生成的代码.
归档时间: |
|
查看次数: |
3723 次 |
最近记录: |