zoukankan      html  css  js  c++  java
  • 关于 AutomationProperties.Name 的一些总结

    在 XAML 代码中,我们偶尔会看到 AutomationProperies 的代码,如 AutomationProperties.Name="xxxxx", AutomationProperites 作为一个类,它里面包括若干个附加属性。这些属性可以为UI自动化测试框架 (Microsoft UI Automation accessibility framework) 提供有价值的信息,并且提高了应用的可访问性。

    本文整理了以下几个关于 AuotmationProperties.Name 属性的作用以及常用方法的知识点,以下用法适合于任何 XAML 平台(如 WPF, UWP等)

    1) AutomationProperties.Name 属性的作用是为控件指定可访问性名称,这个名称可以被类似于“讲述人”软件识别,从而提供了软件的可访问性(如对于盲人等),同样也可以在自动化测试中被使用。原则上,一个控件的 AutomationProperties.Name 最好与此控件显示的标签文本一致。

    2) 非常幸运的是,在 XAML 平台中,如果某个控件(或元素)有可视化文本内容(如 Button 的 Content 属性设置了文本),那么该控件上显示的文本将作为它的 Accessible Name,因此对于这种类型的控件不需要专门为其设置 AutomationProperites.Name 属性。

    3) 如果控件中并没有可示文本(比如按钮中仅显示了图片,或者有更复杂的元素),可以通过以下方法来为其设置 Accessible Name:

    <Button x:Uid="IdentifyPlantButton" />

    在 Strings/zh-cn/Resources.resx 中,我们添加一条项目为其设置 Accessible Name,如下:

    Name:    IdentifyPlantButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name                    
    Value:    Identify Plant Button

    并且,通过这种方式来设置,也可以实现此属性值的本地化。

    4) 以绑定的方式赋值:

    AutomationProperties.Name="{Binding XXXXX}"

     如果需要,也可以适当地在 Binding 中加上 Mode=OneTime;如果 Button 元素在一个 ControlTemplate 时,也可以为它指定:

    AutomationProperties.Name="{TemplateBinding XXXXX}"

    5) 对于 TextBox 控件,可以将 Header 属性为作它的 Accessible Name,如下:

         <TextBox …
             Header="<Some localized string>"
             AutomationProperties.Name= "{Binding Header, RelativeSource={RelativeSource Self}}" />

    6) 可以使用 AutomationProperties.LabelBy 属性,将另一控件的 Acceissble Name 作为当前控件的 Acceissble Name,如下:  

      <Slider …
            AutomationProperties.LabeledBy=”{Binding ElementName=CheeseAllowance}”/>
        <TextBlock …
            Name="CheeseAllowance"
            x:Uid="CheeseAllowanceLabel" />  

    7) 通过代码设置:

    using Windows.UI.Xaml.Automation;
    myControl.SetValue(AutomationProperties.NameProperty, <The desired localized accessible name>);

    最后,虽然可访问性对于一个 App 来说,不是硬性要求,但对于一个高质量的、以及负责任的 App 来说,这一点是必要的。
    While accessibility isn't a hard requirement for an app, it is a requirement for a good app and for a responsible app. 

    参考文章:
    Giving your XAML element an accessible name: Part 1 – Introduction

    Giving your XAML element an accessible name: Part 2 – Set the AutomationProperties.Name

    Giving your XAML element an accessible name: Part 3 – Other interesting ways

    What is the use of AutomationProperties.Name in XAML

    作者:WPInfo

    本文系作者原创,欢迎转载;如需转载,请注明出处。

    公众号:.NET之窗 (WinDotNET),更多原创、优质技术文章,欢迎扫码关注。

  • 相关阅读:
    @bzoj
    @hdu
    @noi.ac
    @noi.ac
    @noi.ac
    jsp include page指令标记
    javascript 对象(DOM)document window history
    HTML 标准属性 和 事件属性
    html 特殊字符 fmt table A
    mysql 启动 导入sql文件
  • 原文地址:https://www.cnblogs.com/wpinfo/p/6413580.html
Copyright © 2011-2022 走看看