我遇到了ValuePattern的问题。我有以下代码:
ValuePattern valuePattern = null;
try
{
valuePattern = AElement.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
valuePattern.SetValue(EditableElement.value[0].ToString());
Debug.WriteLine(AElement.Current.Name + "'s value changed to {0}.", EditableElement.value[0].ToString());
}
catch (InvalidOperationException)
{
Debug.WriteLine("Value pattern not supported for " + AElement.Current.Name);
return;
}
我正在使用controltype.Edit传递一个AutomationElement,当我检查这个元素时,我会收到这条信息:
ControlType.Edit
ValuePatternIdentifiers.Pattern
LegacyIAccessiblePatternIdentifiers.Pattern
A first chance exception of type 'System.InvalidOperationException' occurred in UIAComWrapper.dll
Value pattern not supported
有没有人知道为什么在GetSupportedPatterns()中列出ValuePatternIdentifiers.Pattern而不支持valuepattern?
答案 0 :(得分:1)
在您检查可用模式与触发valuePatter.SetValue之间的时间范围内,模式可能会消失或变得不可用。
所以,我建议,在触发valuePattern.SetValue并验证Value Pattern的存在之前,只需打印 GetAllSupportedPatterns 。
另外,如果您有UIAVerifier的副本,您可以随时尝试手动进行更改并隔离Window Control或您的代码是否有问题。