XAML属性之间是否存在真正的差异
AutomationProperties.AutomationId 和
AutomationProperties.Name 吗?
最重要的是,是否有任何理由选择一个?
尽管msdn对.AutomationId这么说,但它们对我来说似乎都不是唯一的:
“唯一标识指定元素的字符串。”
我测试了一个WPF应用程序,该应用程序具有2个按钮,每个按钮在同一树路径中都具有相同的.AutomationId,而.AutomationId根本不是唯一的。
XAML允许我给它们提供相同的.AutomationId,如果我通过以下代码搜索它们,它将返回两个Button。
PropertyCondition cond = new PropertyCondition(AutomationElement.AutomationIdProperty, "myButton");
returnedAEs = myMainWindow.FindAll(TreeScope.Children, cond);
foreach (AutomationElement element in returnedAEs)
{
//...enters here 2 times
}
XAML:
<Window ... >
<Grid ...>
<Button ... AutomationProperties.AutomationId="myButton"/>
<Button ... AutomationProperties.AutomationId="myButton"/>
<Window ... >
</Grid>
</Window>
您的输入将不胜感激!
最佳答案
这是我发现的一些差异:
.AutomationId,但不是.AutomationName
name
和
automationId
可能也很有用。这两个链接的最大区别是:“如果
没有专门设置AutomationProperties.AutomationId,它
返回AutomationProperties.Name属性值。”
为name属性指定。
设置了AutomationProperties.Name,并在xaml中设置了Name(不是x:Name,
设置为不起作用!),然后
AutomationProperties.AutomationId设置为与
名称属性是(请注意,我的意思是与
名称(标准XAML属性)和AutomationProperties.Name !!)
<TextBlock x:Name="msgStatus"
Text="idle"
... />
可以通过以下方式访问文本属性的值“idle”
AutomationProperties.Name!阅读标签文本也是如此。标签内容也可以由AutomationProperties.Name读取(如果未在.xaml中指定AutomationProperties.Name)!
关于wpf - 差异AutomationProperties.AutomationId AutomationProperties.Name,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22711461/