Q:

How do I highlight DataGrid row when only selecting checkbox when I've disabled row selection on clicking?

I am new to WPF and want to create something like this:

As you can see in my xaml file below, I have made all the columns read only (except the checkbox column) and since the default behavior of DataGrid is to highlight the row when directly clicking on it, I've hidden that by making the background color transparent. 
However, what I do want to have happen is that when you click the checkbox, the entire row will highlight.  So, I don't want row highlighting when you click other stuff (including within the checkbox column but not in the checkbox itself) but highlight the row when you click the checkbox.
Can anyone help me achieve this desired behavior?
<DataGrid Grid.Row="2"
          Grid.Column="1"
          Grid.ColumnSpan="2"
          ItemsSource="{Binding StudentData}"
          AutoGenerateColumns="False"
          RowHeight="30"
          ColumnWidth="150"
          GridLinesVisibility="Horizontal"
          HeadersVisibility="Column"
          SelectionMode="Extended"
          >
    <DataGrid.Resources>
        <!-- Set the color, height, and padding of colum headers -->
        <Style BasedOn="{StaticResource {x:Type DataGridColumnHeader}}" TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="Background" Value="#7AC040" />
            <Setter Property="Foreground" Value="White" />
            <Setter Property="Height" Value="30" />
            <Setter Property="BorderBrush" Value="White"/>
            <Setter Property="BorderThickness" Value="0,0,1,0"/>
            <Setter Property="Padding" Value="10 0 0 0" />
        </Style>

        <!-- When selecting a row, sets its highlight color to a light blue and its text to be black -->
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#CFECFF"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>

        <!-- Stylizes the checkbox column and makes it so that clicking the checkbox will select it instead of having to click twice -->
        <Style x:Key="DataGridCheckboxStyle" TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
            <Setter Property="VerticalAlignment" Value="Center" />
            <Setter Property="HorizontalAlignment" Value="Center" />
        </Style>

        <!-- Pads the text of the actual data and makes the font size a bit bigger -->
        <Style x:Key="GridCellStyle" TargetType="{x:Type TextBlock}">
            <Setter Property="Padding" Value="10 0 0 0"/>
            <Setter Property="VerticalAlignment" Value="Center" />
            <Setter Property="FontSize" Value="13" />
        </Style>
    </DataGrid.Resources>

    <DataGrid.Columns>
        <DataGridTemplateColumn Width="40">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox Style="{StaticResource DataGridCheckboxStyle}" IsChecked="{Binding Path=Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTextColumn Width="270" Header="Name" Binding="{Binding Name}" ElementStyle="{StaticResource GridCellStyle}" IsReadOnly="True" />
        <DataGridTextColumn Width="250" Header="University" Binding="{Binding University}" ElementStyle="{StaticResource GridCellStyle}" IsReadOnly="True" />
        <DataGridTextColumn Width="100" Header="Age" Binding="{Binding Age}" ElementStyle="{StaticResource GridCellStyle}" IsReadOnly="True" />

        <DataGridTemplateColumn Width="50">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Image Source="{Binding StatusImage}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>

    <!-- Removes any highlighting of rows when clicking on a cell -->
    <DataGrid.CellStyle>
        <Style TargetType="{x:Type DataGridCell}">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="Transparent" />
                    <Setter Property="Foreground" Value="Black" />
                    <Setter Property="BorderBrush" Value="Transparent" />
                </Trigger>
            </Style.Triggers>

        </Style>
    </DataGrid.CellStyle>

</DataGrid>

A:

First, I would replace the DataTemplateColumn with a DataGridCheckBoxColumn, like so:
<DataGridCheckBoxColumn Binding="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

Then, I would add a RowStyle to your DataGrid, like so:
      <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
          <Style.Triggers>
            <DataTrigger Binding="{Binding Selected}"
                         Value="True">
              <Setter Property="IsSelected"
                      Value="True" />
              <Setter Property="Background"
                      Value="Red" />
            </DataTrigger>
          </Style.Triggers>
        </Style>
      </DataGrid.RowStyle>

Note that I'm just changing the background to red so it's super clear what's happening. 

