3

我遇到了 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

有谁知道为什么它说 valuepattern 不受支持而 ValuePatternIdentifiers.Pattern 在 GetSupportedPatterns() 中列出?

4

1 回答 1

1

在您检查可用模式和触发 valuePatter.SetValue 之间的时间范围内,模式有可能会消失或变得不可用。

因此,我建议在触发 valuePattern.SetValue 之前打印GetAllSupportedPatterns并验证值模式的存在。

此外,如果您有 UIAVerifier 的副本,您可以随时尝试手动进行更改,并在 Window Control 或您的代码有问题时隔离。

于 2014-12-08T16:16:53.003 回答