Я делал нечто подобное раньше.Вы можете использовать DataGrid.ItemContainerStyle для этой цели.Вы можете стилизовать свойство ControlTemplate для DataGridRow (который является типом контейнера элемента), изучить этот блог о том, как это сделать .В шаблоне вы должны включить новую границу.
Свойство IsSelected объекта DataGridRow должно быть привязано к некоторому свойству модели (данным строки), которое может уведомлять модель представления или любую другую службу, которую вы используете для сбора выбранных строк.Граница, включенная в ControlTemplate, должна связывать его StrokeThickness с той же моделью представления или службой.Затем вы можете использовать конвертер для этой привязки, который использует модель представления или службу, чтобы выяснить, какая сторона границы должна быть толстой для этой конкретной строки.
Эта задача не простая, но возможная.Вы можете столкнуться с некоторыми архитектурными проблемами.Я бы использовал MVVM, DI и другие шаблоны, чтобы избежать хаоса.
Надеюсь, это поможет.