x:Name与Name有两个不一样点:spa
一、x:Name是Xaml的标记特性,任何在Xaml中定义的元素,均可以使用x:Name来为元素指定名称。code
Name是FrameworkElement定义的依赖项属性(String类型),只有FrameworkElement的派生类才能够使用Name。xml
例如,Ellipse的Fill属性的类型是Brush,Brush不是FrameworkElement的子类,它没有Name属性。ip
所以,在Xaml中,为Brush指定名称时,只能使用x:Name标记特性:get
二、在FrameworkElement的定义中,添加了System.Windows.Markup.RuntimeNamePropertyAttribute特性:string
该特性的做用是,当在Xaml中,使用x:Name后,该值将被自动赋给FrameworkElement的Name属性。编译
能够使用RuntimeNamePropertyAttribut,为本身定义的类添加名称特性:class
[RuntimeNamePropertyAttribute("N1")] im
[RuntimeNamePropertyAttribute("N2")]
public class Person : UIElement
{
public String N1 { get; set; }
public String N2 { get; set; }
} di