在WPF中,x:Name和Name属性之间有什么区别?

标题说明了一切。 有时似乎Namex:Name属性是可互换的。

那么,它们之间的明确区别是什么?何时使用一种优于另一种呢?

以错误的方式使用它们是否会对性能或内存产生影响?


#1楼

它们不是同一件事。

x:Name是一个xaml概念,主要用于引用元素。 当给元素提供x:Name xaml属性时,“指定的x:Name成为在处理xaml时在基础代码中创建的字段的名称,并且该字段包含对该对象的引用。” ( MSDN )因此,这是一个设计师生成的字段,默认情况下具有内部访问权限。

NameFrameworkElement的现有字符串属性,以xaml属性的形式与任何其他wpf元素属性一起列出。

结果,这也意味着x:Name可以在更大范围的对象上使用。 这是一种使xaml中的任何内容都能被给定名称引用的技术。


#2楼

唯一的区别是,如果将用户控件用于Same Assembly中的控件,则Name将无法标识您的控件,并且会出现错误“在同一Assembly中为控件使用x:Name”。 因此x:Name是WPF中命名控件的WPF版本。 名称仅用作Winform Legacy。 他们希望区分WPF和Winforms中控件的命名,因为他们使用Xaml中的属性来从其他使用x:表示控件名称的程序集中识别控件。

请记住,不要仅仅为了保留控件的名称而将其命名,因为它作为空白驻留在内存中,它会警告您名称已用于控件,但从未使用过。


#3楼

名称

  1. 只能用于FrameworkElement和FrameworkContentElement的后代;
  2. 可以通过SetValue()和类似属性的代码在后台进行设置。

x:名称

  1. 几乎可以用于所有XAML元素;
  2. 不能通过SetValue()从后台代码设置; 因为它是指令,所以只能在对象上使用属性语法进行设置。

在XAML中为一个FrameworkElement或FrameworkContentElement使用两个指令将导致异常:如果XAML是标记编译的,则该异常将在标记编译时发生,否则将在加载时发生。


#4楼

答案之一是x:name将在不同的程序语言(例如c#)中使用,而name将用于框架。 老实说,这就是我的感觉。


#5楼

x:Name意思是:在后面的代码中创建一个

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值