Вы можете сделать что-то вроде следующего:
<DataGrid x:Name="BlueprintsDataGrid" Grid.Row="0" IsReadOnly="True"
ItemsSource="{Binding Path=Game.Blueprints, ElementName=uc}"
SelectedItem="{Binding CurrentSelection}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="80*" Binding="{Binding Name}"/>
<DataGridTextColumn Header="ME" Width="30*" Binding="{Binding MaterialEfficiency}"
HeaderStyle="{StaticResource HeaderRightJustify}"
CellStyle="{StaticResource ColumnRight}"/>
<DataGridCheckBoxColumn Header="BPO" Width="30*" Binding="{Binding IsOrginial}"
HeaderStyle="{StaticResource HeaderRightJustify}"/>
</DataGrid.Columns>
</DataGrid>
Примечание: CurrentSelection должно существовать в вашем классе ViewModel.Это свойство должно реализовывать интерфейс INotifyPropertyChanged и должно быть типом объекта, который удерживается вашим ItemsSource !
Для распознавания двойного щелчка мыши вы можете расширить приведенный выше xaml на что-то вроде
<DataGrid x:Name="BlueprintsDataGrid" Grid.Row="0" IsReadOnly="True"
ItemsSource="{Binding Path=Game.Blueprints, ElementName=uc}"
SelectedItem="{Binding CurrentSelection}"
AutoGenerateColumns="False">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding DoubleClickedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="80*" Binding="{Binding Name}"/>
<DataGridTextColumn Header="ME" Width="30*" Binding="{Binding MaterialEfficiency}"
HeaderStyle="{StaticResource HeaderRightJustify}"
CellStyle="{StaticResource ColumnRight}"/>
<DataGridCheckBoxColumn Header="BPO" Width="30*" Binding="{Binding IsOrginial}"
HeaderStyle="{StaticResource HeaderRightJustify}"/>
</DataGrid.Columns>
</DataGrid>
Примечание: Поэтому вам необходимо свойство DoubleClickedCommand типа ICommand в вашей ViewModel.Там вы можете проверить свой CurrentSelection.
public ICommand DoubleClickedCommand { get; set; }
В вашем конструкторе ViewModel:
DoubleClickedCommand = new RelayCommand(DoubleClick);
И сам метод:
private void DoubleClick()
{
if(CurrentSelection == null) { return; }
// Do stuff in here
}