<DataGrid x:Name="MyDatagrid" AutoGenerateColumns="False" SelectionMode="Single">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Edit">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ToggleButton x:Name="btnEdit" Content="Edit" IsChecked="{Binding Is_Checked}"></ToggleButton>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="ID" Visibility="Collapsed" Binding="{Binding MyClassId}" />
<DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" IsReadOnly="{Binding Is_Checked}"/>
<DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" IsReadOnly="{Binding Is_Checked}"/>
</DataGrid.Columns>
</DataGrid>
Во-первых, каждый столбец должен иметь IsReadOnly.
И IsReadOnly, привязка Is_Checked MyClass.
IsChecked ToggleButton Связывание Is_Checked MyClass тоже.
Затем, когда ToggleButton Нажмите, измените IsReadOnly столбца.
Все это должно быть MVVM
public class MyClass
{
[Key]
public int MyClassId { get; set; }
public string FirstName{ get; set; }
public string LastName{ get; set; }
public bool Is_Checked{ get; set; }
.........
.........
}