找回密码
 立即注册

QQ登录

只需一步,快速开始

graper

高级会员

45

主题

63

帖子

1348

积分

高级会员

积分
1348

活字格认证

graper
高级会员   /  发表于:2009-12-14 09:11  /   查看:8700  /  回复:0
Post by "Alen",   11-26-2009, 11:15
-----------------------------------------------------

先说结论:
1. xmal中,永远只有一个, 它就是x:Name
2. 我们在xaml中有时能使用的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!

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部