Create a property in the CodeBehind or ViewModel. Use that property and create a Binding to the DataGrid's SelectedItem (you have probably done this already).
Then the SelectedItem property should hold a row as defined in the ItemsSource.
If the rows are known classes with known properties, this is simple. If it's a DataTable with DataRows, it's still quite possible but maybe a little more hazzle.
In the TabControl, create a Binding to the "ItemsSource" (for the TabControl) to the SelectedItem. Then use a Converter with a StaticBinding to a class implementing the "IValueConverter".
The "value" property in the converter's "Convert" method should then be a the SelectedItem.
Parse the SelectedItem properties or columns, create an ObservableCollection<Control> or ObservableCollection<TabItem>. If you create a collection of Control, you may have to define an "ItemTemplate" for the TabControl.
Then add all the controls you need to the colelction and return the whole collection in the converter's "Convert" method.
I hope I understood the problem/question