使用 FlaUI.UIA3 生成等效代码以访问 WPF 中的 DevExpress DataGrid 行和列
Equivalent code generation using FlaUI.UIA3 for accessing DevExpress DataGrid rows & columns in WPF
我正在使用 FlaUI
来自动化我的 WPF
应用程序。我有一个来自 DevExpress
的 datagrid
控件。我想访问任何单独的行和该行的所有列并使用 FlaUI
对其进行编辑。 DevExpress 论坛有以下可用示例,但这是针对 UIA library.How 我可以使用 FlaUI
库重写它吗?
AutomationElement gridElem = AutomationElement.RootElement.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.LocalizedControlTypeProperty, "datagrid"));
GridPattern gridPattern = (GridPattern)gridElem.GetCurrentPattern(GridPattern.Pattern);
int rowCount = gridPattern.Current.RowCount;
List<object> values = new List<object>();
for (int i = 0; i < rowCount; i++) {
AutomationElement item = gridPattern.GetItem(i, 0);
ValuePattern valuePattern = (ValuePattern)item.GetCurrentPattern(ValuePattern.Pattern);
values.Add(valuePattern.Current.Value);
对 FlaUI
和 automation
很陌生。
终于在DevExpress
支持的帮助下,我得以实现我的意图。这是一段运行良好的代码:)
public void CreateNewViewGrid(Grid grid)
{
var pattern = grid.Patterns.Grid;
var rowCount = pattern.Pattern.RowCount;
var colCount = pattern.Pattern.ColumnCount;
var values = new List<object>();
List<string> columnNames = new List<string>();
columnNames.Add("Vessel Id");
columnNames.Add("Voyage Id");
columnNames.Add("Load Date");
columnNames.Add("Dis Date");
columnNames.Add("Vessel Name");
columnNames.Add("Status");
for (int i = 0; i < rowCount; i++)
{
var item = pattern.Pattern.GetItem(i, 0);
var item2 = pattern.Pattern.GetItem(i, 1);
var value = (item2.Patterns.Value.Pattern.Value).ToString();
values.Add((value));
foreach (var data in columnNames)
{
if (value == data)
{
var itemStatus = item.AsGridCell();
itemStatus.Click();
}
}
}
//Console.WriteLine(string.Join(", ", values));
//return values;
}
在此之前,使用FlaUI is necessary
查找元素
网格(参考自FlaUI.Core.AutomationElements
)
private Grid grid=>windows.FindFirstDescendant(cf=>cf.ByAutomationID("dataGrid").AsGrid();
我正在使用 FlaUI
来自动化我的 WPF
应用程序。我有一个来自 DevExpress
的 datagrid
控件。我想访问任何单独的行和该行的所有列并使用 FlaUI
对其进行编辑。 DevExpress 论坛有以下可用示例,但这是针对 UIA library.How 我可以使用 FlaUI
库重写它吗?
AutomationElement gridElem = AutomationElement.RootElement.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.LocalizedControlTypeProperty, "datagrid"));
GridPattern gridPattern = (GridPattern)gridElem.GetCurrentPattern(GridPattern.Pattern);
int rowCount = gridPattern.Current.RowCount;
List<object> values = new List<object>();
for (int i = 0; i < rowCount; i++) {
AutomationElement item = gridPattern.GetItem(i, 0);
ValuePattern valuePattern = (ValuePattern)item.GetCurrentPattern(ValuePattern.Pattern);
values.Add(valuePattern.Current.Value);
对 FlaUI
和 automation
很陌生。
终于在DevExpress
支持的帮助下,我得以实现我的意图。这是一段运行良好的代码:)
public void CreateNewViewGrid(Grid grid)
{
var pattern = grid.Patterns.Grid;
var rowCount = pattern.Pattern.RowCount;
var colCount = pattern.Pattern.ColumnCount;
var values = new List<object>();
List<string> columnNames = new List<string>();
columnNames.Add("Vessel Id");
columnNames.Add("Voyage Id");
columnNames.Add("Load Date");
columnNames.Add("Dis Date");
columnNames.Add("Vessel Name");
columnNames.Add("Status");
for (int i = 0; i < rowCount; i++)
{
var item = pattern.Pattern.GetItem(i, 0);
var item2 = pattern.Pattern.GetItem(i, 1);
var value = (item2.Patterns.Value.Pattern.Value).ToString();
values.Add((value));
foreach (var data in columnNames)
{
if (value == data)
{
var itemStatus = item.AsGridCell();
itemStatus.Click();
}
}
}
//Console.WriteLine(string.Join(", ", values));
//return values;
}
在此之前,使用FlaUI is necessary
网格(参考自FlaUI.Core.AutomationElements
)
private Grid grid=>windows.FindFirstDescendant(cf=>cf.ByAutomationID("dataGrid").AsGrid();