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