When the selected item is set initially, the selected style is not applied to the row/cell.
Workaround: You can use a Dispatcher to workaround the issue, code looks as follows:
this.Dispatcher.StartTimer(TimeSpan.FromMilliseconds(200), () =>
{
if (dataGrid.SelectedItem == null)
{
dataGrid.SelectItem(viewModel.PersonCollection.First());
}
return false;
});