x:Name 唯一地标识 XAML 定义的对象,以便于从代码隐藏或通用代码中访问对象图中实例化的对象。x:Name 一旦应用于支持编程模型,便可被视为与由构造函数返回的用于保存对象引用或实例的变量等效。
x:Name 用来在XAML中表示一个指定对象的名称;可以通过他来访问XAML对应隐藏代码所关联的对象。
Name 许多框架的类中都有Name这个属性,而在WPF中,x:Name和Name是可以互换的。
所以现阶段他们两者做的是同样的工作。
结果:
-
xmal中,永远只有一个, 它就是x:Name;
-
我们在xaml中有时能使用的Name,其实是被映射到x:Name上的。
原因:
-
所有的Type在xaml中都能使用x:Name,即使这个type 没有定义一个叫着Name的Property。因为xmal会在后台为其分配一个field来存储,以便在Binding等里面使用。
-
像FrameworkElement, VisualStateGroup的某些type,我们在xaml中可以使用Name来代替x:Name,因为它们定义了Name Property,但是最关键的是在type上声明了一个Attribute,[RuntimeNameProperty(“Name”)],正是这个attribute把Name映射到了x:Name上,所以让Name可以做到x:Name的功能。
XAML中x:Name与Name并不完全等价。
不是所有类型都可以使用Name,但是任何类型都可以使用x:Name。
只有拥有Name属性,才可以在XAML中使用Name。不同于x:Name,因为这个是附加属性。
并且该类型、或者其父类型标记了RuntimeNameProperty特性,才拥有与x:Name一样的效果。
例如:便会报错,因为SolidColorBrush没有Name属性。
只能使用x:Name。
扩展:
如果我们的某些type需要定义一个 Property,并且想做到x:Name的能力,别忘了加上RuntimeNamePropertyAttribute!
这个只是一个代码编写风格和习惯的问题,而不是一个技术问题。
**
总之,WPF中使用x:Name就对了!
本博客Android APP 下载 |
![]() |
支持我们就给我们点打赏 |
![]() |
支付宝打赏 支付宝扫一扫二维码 |
![]() |
微信打赏 微信扫一扫二维码 |
![]() |
如果想下次快速找到我,记得点下面的关注哦!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2020-07-10 跨域问题服务端解决办法 Request header field Authorization is not allowed by Access-Control-Allow-Headers
2018-07-10 .net OADate 转javascript的Datetime js 5位 日期 转换
2017-07-10 (转载)开发人员必须用到的开发软件破解
2017-07-10 HTML5漫谈(7)——如何保护HTML5应用代码
2017-07-10 【转】使用Jasob混淆javascript代码
2016-07-10 SQL 查询数据库中所有表信息