This method should get the job done:
private static int GetItemsInFirstRow(ItemsControl itemsControl)
{
double previousX = -1;
int itemIndex;
for (itemIndex = 0; itemIndex < itemsControl.Items.Count; itemIndex++)
{
var container = (UIElement)itemsControl.ItemContainerGenerator
.ContainerFromIndex(itemIndex);
var x = container.TranslatePoint(new Point(), itemsControl).X;
if (x <= previousX)
{
break;
}
previousX = x;
}
return itemIndex;
}