x:xaml文件中控件的名称和名称有什么区别吗?

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将包含具有Nameor x:Name属性的任何元素的字段定义.该 InitialiseComponent所生成方法将使用FindName方法将值分配给这些字段.

上面的Xaml创建了两个LayoutRoot类型GridMyBrush类型的字段SolidColorBrush.如果你要改变x:Name="LayoutRoot",以Name="LayoutRoot"将改变什么. GridName房产.但是请尝试x:Name="MyBrush"改为Name="MyBrush".这不起作用,因为SolidColorBrush没有name属性.使用上面的Xaml,您可以像这样执行代码: -

    public MainPage()
    {
        InitializeComponent();
        MyBrush.Color = Colors.LightGray;
    }
Run Code Online (Sandbox Code Playgroud)

打开定义InitializeComponent并查看自动生成的代码.