WPF中Name和x:Name

x:Name用来在XAML中表示一个制定对象的名称;可以通过它来访问XAML对应的资源;

Name在.net的很多类中都存在,在WPF中可以和x:Name互换。

 

结果:

1. 在XAML中只存在x:Name,

2. 我们使用的Name其实是映射到x:Name。

 

使用:

1. 所有的Type在xaml中都能使用x:Name,即使这个type 没有定义一个叫着Name的Property。因为xmal会在后台为其分配一个field来存储,以便在Binding等里面使用。
2. 像FrameworkElement, VisualStateGroup的某些type,我们在xaml中可以使用Name来代替x:Name,因为它们定义了Name Property,但是最关键的是在type上声明了一个Attribute,[RuntimeNameProperty("Name")],正是这个attribute把Name映射到了x:Name上,所以让Name可以做到x:Name的功能。

 

扩展:
如果我们的某些type需要定义一个 Property,并且想做到x:Name的能力,别忘了加上RuntimeNamePropertyAttribute!

 

 

关于两者的使用,主要看项目的编码规范。

posted @ 2017-07-29 18:53  致林  阅读(1135)  评论(0编辑  收藏  举报