internal override List<IUiElement> FilterElements(SingleControlSearcherData controlSearcherData, List<IUiElement> initialCollection)
{
const WildcardOptions options = WildcardOptions.IgnoreCase | WildcardOptions.Compiled;
var wildcardName = new WildcardPattern(controlSearcherData.Name ?? "*", options);
var wildcardValue = new WildcardPattern(controlSearcherData.Value ?? "*", options);
foreach (IUiElement element in initialCollection) {
if (element.IsMatchWildcardPattern(ResultCollection, wildcardName, element.GetCurrent().Name))
continue;
if (element.IsMatchWildcardPattern(ResultCollection, wildcardName, element.GetCurrent().AutomationId))
continue;
if (element.IsMatchWildcardPattern(ResultCollection, wildcardName, element.GetCurrent().ClassName))
continue;
try {
string elementValue = element.GetCurrentPattern<IValuePattern>(classic.ValuePattern.Pattern).Current.Value;
if (element.IsMatchWildcardPattern(ResultCollection, wildcardName, elementValue))
continue;
if (element.IsMatchWildcardPattern(ResultCollection, wildcardValue, elementValue))
continue;
} catch {
}
}
return ResultCollection;
}