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

前端之家收集整理的这篇文章主要介绍了silverlight – x:xaml文件中控件的名称和名称有什么区别吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Silverlight的新手.
当我使用Visual Studio向我的xaml文件添加一些控件时,它使用Name属性设置控件名称,但也有x:Name.
是否存在差异以及何时使用它们?
谢谢.

解决方法

简单来说

是,有一点不同.底线是x:Name可用于没有自己的Name属性的对象元素.

更长的解释

您只能在表示实际具有Name属性的对象的元素上使用Name.例如,任何派生自FrameworkElement的东西.

x:Name属性可以放在表示对象的任何元素上,无论该对象是否实际具有Name属性.如果对象确实具有Name属性,则x:Name的值将分配给它,因此您不能在同一元素上同时具有x:Name和Name.

当对象具有Name属性或x:Name属性时,该属性的值与对象树中的对象条目相关联.通过对象树,FrameworkElement的FindName方法可以找到一个对象. FindName可以按名称查找对象,即使该对象没有自己的Name属性,因为它使用对象树中记录的名称.

UserControl的自动生成代码将包含具有Name或x:Name属性的任何元素的字段定义.生成的InitialiseComponent方法将使用FindName方法为这些字段分配值.

        
            
        
        
   

上面的Xaml创建两个Grid类型的LayoutRoot和SolidColorBrush类型的MyBrush.如果您要将x:Name =“LayoutRoot”更改为Name =“LayoutRoot”,则不会更改任何内容. Grid有一个Name属性.但是请尝试将x:Name =“MyBrush”更改为Name =“MyBrush”.这不起作用,因为SolidColorBrush没有name属性.使用上面的Xaml,您可以像这样执行代码: –

public MainPage()
    {
        InitializeComponent();
        MyBrush.Color = Colors.LightGray;
    }

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

猜你在找的Silverlight相关文章