12

问题

谁能解释一下(最好用代码示例)AutomationProperties.Name 属性如何以编程方式和声明方式与 XAML 一起使用?

解释

例如,我了解 Visual Studio 2010 中的 Coded UI Builder 将 Window 的名称作为 SearchProperty。

由于我的 Window 的名称发生了变化,我希望有一个常量 SearchProperty,我的编码 UI 测试可以依赖它。

在下面的代码示例中,我不希望将窗口标题硬编码为“管道 1 的属性”,因为它会发生变化。

代码示例

[GeneratedCode("Coded UITest Builder", "10.0.30319.1")]
public class UIListViewPropertiesTable1 : WpfTable
{
    
    public UIListViewPropertiesTable1(UITestControl searchLimitContainer) : 
            base(searchLimitContainer)
    {
        #region Search Criteria
        this.SearchProperties[WpfTable.PropertyNames.AutomationId] = "listViewProperties";
        this.WindowTitles.Add("Properties of Pipe 1");
        #endregion
    }
    
    #region Properties
    public WpfText NameOfComponent
    {
        get
        {
            if ((this.mNameOfComponent == null))
            {
                this.mNameOfComponent = new WpfText(this);
                #region Search Criteria
                this.mNameOfComponent.SearchProperties[WpfText.PropertyNames.Name] = "Pipe 1";
                this.mNameOfComponent.WindowTitles.Add("Properties of Pipe 1");
                #endregion
            }
            return this.mNameOfComponent;
        }
    }
    #endregion
    
    #region Fields
    private WpfText mNameOfComponent;
    #endregion
}

链接

这是一个示例:如何:使自动化在数据绑定的 WPF 列表或组合框上正常工作。我无法将其调整为 Window。

4

3 回答 3

12

您可以使用以下命令在 XAML 中更改附加属性AutomationProperties.Name :

AutomationProperties.Name = "新名称"

或在代码中使用:

Button.SetValue(AutomationProperties.NameProperty, "新值");

AutomationProperties.SetName(Button, "new value");

于 2012-11-05T12:16:51.383 回答
1

您可以将窗口标题作为参数传递给其父级,并在初始化时设置此参数。

我这样做并且工作正常。

于 2012-10-05T07:48:03.200 回答
0

有一种方法可以解决这个问题,但它有点难看。

我们将使用这样一个事实,即包含对窗口的引用的属性被缓存而不是每次都查找。

uimap 类是一个分部类,您可以在 uimap.cs 文件中包含仍然算作 uimap 类一部分的代码。

在此处添加一个方法,该方法接受窗口标题作为参数并执行搜索,并将找到的窗口放入生成代码的 UIListViewPropertiesTable1 属性中。

于 2012-08-28T01:15:18.260 回答