.net AutomationProperties.Name VS x:Name

.net AutomationProperties.Name VS x:Name,.net,wpf,silverlight,accessibility,ui-automation,.net,Wpf,Silverlight,Accessibility,Ui Automation,“CodedUI测试生成器”在AutomationProperties.Name和x:Name之间没有区别。但是第一个可以覆盖第二个。 AtomationProperties.Name还支持数据绑定,x:Name当然不支持 如果您使用的是MVVM模式,最好只在需要时使用x:Name 因此,AutomationProperties.Name应该优先于x:Name?摘要吗 x:Name和AutomationProperties.Name是两个完全不同的东西,所以“我应该使用其中一个还是另一个”的问题

“CodedUI测试生成器”在
AutomationProperties.Name
x:Name
之间没有区别。但是第一个可以覆盖第二个。 AtomationProperties.Name还支持数据绑定,
x:Name
当然不支持

如果您使用的是MVVM模式,最好只在需要时使用
x:Name

因此,
AutomationProperties.Name
应该优先于
x:Name

摘要吗
x:Name
AutomationProperties.Name
是两个完全不同的东西,所以“我应该使用其中一个还是另一个”的问题是基于一个错误的前提:一般来说,你不能使用其中一个

x:Name
的目的是在代码隐藏中识别WPF控件,以便开发人员可以访问它。它在建模特定WPF元素的类的范围之外没有意义(或唯一)

另一方面,
AutomationProperties.Name
的目的是在显示给用户进行交互的对话框或其他类型窗口的上下文中标识用户界面元素。具体而言,其值应与用户认为该用户界面元素的“标签”相匹配(例如,可访问性工具可告知用户该元素的用途)

虽然任何工具(如XAML编译器)都可以选择使用
x:Name
的值来表示
AutomationProperties.Name
,但这并不意味着您应该这样做;IMHO这正是导致问题的“便利”类型,因为二者之间的差异对开发者来说是隐藏的,所以总是一个或另一个属性的值在语义上是错误的

下一节将介绍每个属性的语义和技术方面的信息

x:姓名 页面解释说

在x:Name应用于框架的支持编程模型之后, 该名称相当于保存对象引用的变量 或构造函数返回的实例

x:Name指令用法的值在XAML中必须是唯一的 名称镜

[……]

在使用 XAML、分部类和代码隐藏,指定的x:Name将变为 XAML时在基础代码中创建的字段的名称 由标记编译生成任务处理,该字段保存 对对象的引用

从上面我们可以看出
x:Name

  • 用于访问代码中的元素(而不是XAML),因为它控制保存元素的字段的名称
  • 在中必须是唯一的(因为代码中不能有两个同名字段)
  • AutomationProperties.Name 政府解释说,

    自动化元素的名称由开发人员指定。这个 Name属性应始终与上的标签文本一致 屏幕。例如,按钮元素的名称必须为“浏览…” 以“浏览…”作为标签


    我已经读过了,如果我错了,请纠正我的错误,但这篇文章并没有说你应该使用一个而不是另一个。这只是一篇关于“我应该给所有东西起个名字吗?”@Silvermind我已经更新了文本,以更清楚地指出文章的内容。@Trispid它并没有改变我所说的事实。这个链接与这个问题无关,它不是关于name优先于x:name或x:name优先于x:name。所以我想你应该也本地化AutomationProperties.name