this is a not so nice way but I have problems getting custom controls using the Get or GetMultiple on UIItems (I hope this will be fixed in later releases of White)
so I come back to Automation element
foreach (ListViewRow row in _rows)
// scroll the automation element in the view there is no good way in white in the moment :(
PropertyCondition propertyClassName = new PropertyCondition(AutomationElement.ClassNameProperty, "DataGridCell");
PropertyCondition propertyConditionControlType = new PropertyCondition(AutomationElement.ControlTypeProperty,
//the count of cells cannot be correct performed, if many cells are displayed
AutomationElementCollection itemCollection = row.AutomationElement.FindAll(TreeScope.Descendants,
new AndCondition( propertyClassName, propertyConditionControlType));
List<MyListViewCell> cells = new List<MyListViewCell>();
// add all cells to the List as ETS4ListViewCell
foreach (AutomationElement element in itemCollection)
cells.Add( new MyListViewCell( element, _listView.ActionListener ) );
as you can see I use the constructor of MyListViewCell, the ActionListener is the same as each UIItem of your application has.
I'm not sure but each cell automationID contains the index by default, but you should not use this because it contains the namespace of the element and the name and if this changes you have to change your code too.
So as you can see I use a Regular expression to get only the index and ignore the rest. (look at MyListViewCell.GetIndex() )