Никогда не делал этого с помощью DataGrid.Обычно, когда мне нужно управлять чем-то вроде этого, я использую ListBox и DataTemplate с Grid внутри, чтобы дать ему представление о Grid или ListView с GridView в шаблоне, потому что они оба дают вам больший контроль над взаимодействием.
Снимок в темноте, поскольку вы привязываетесь, вы можете использовать DataGridTemplateColumn.CellEditingTemplate и создать свою собственную кнопку / текст Delete, которая будет видимой или включенной на основе логики в вашем объекте привязки.Может быть, что-то вроде этого (я не проверял это, но это должно быть направление, в котором вы можете двигаться)?
<dg:DataGridTemplateColumn Header="Action">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Text Content="Delete" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
<dg:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ButtonEnabled="{Binding Path=IsDeleteEnabled, Mode=OneWay}" Content="Delete" Command="{Binding Path=DeleteMe}" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellEditingTemplate>
</dg:DataGridTemplateColumn>
Используя этот метод, поскольку команда привязана к отдельному объекту, вы, вероятно, имели бычтобы вызвать событие, которое обрабатывает ViewModel вашего экрана, чтобы удалить эту строку из ObservableCollection.
Опять же, не уверен, что это лучший способ, но это мой 10-минутный удар по нему.Поэтому, если это ужасно, пожалуйста, не голосуйте за меня слишком сильно.