我正在尝试使用System.Windows.Automation在controlType.dataGrid中选择一行。 Row是一个controlType.Text。我试图搜索任何方式如何获取其模式并调用pattern.Select()函数,但没有成功。任何人都可以给我一个提示怎么做?感谢
选择DataGrid:
AutomationElement dataGrid = routeDetailOpt.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "m_RouteListView"));
选择行本身:
AutomationElement rowToSelect = dataGrid.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.DataItem));
选择“cell”以便我可以获取其模式并调用Select():
AutomationElement rowHeader = rowToSelect.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Text));
获取模式:
SelectionItemPattern pattern = rowHeader.GetCurrentPattern(SelectionItemPattern.Pattern) as SelectionItemPattern;
我收到以下错误:
“” * .dll中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理
其他信息:不支持的模式。 “”
任何帮助都将不胜感激。
答案 0 :(得分:0)
经过长时间的斗争,我们找到了解决方案。
事实证明,我们需要做的就是在dataGrid项目上调用“SetFocus()”,这一切都运行得很好! (不要问我为什么从一开始就没有焦点)
仅供参考,我使用rowToSelect进行实际选择,而不是使用rowHeader
SelectionItemPattern pattern = rowToSelect.GetCurrentPattern(SelectionItemPattern.Pattern) as SelectionItemPattern;
pattern.Select();