Add references to System.Windows.Forms and System.Drawing and try the following:
<DataGrid x:Name="dGrid1" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Change colour" Click="Button_Click_1" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
private void Button_Click_1(object sender, RoutedEventArgs e) {
System.Windows.Forms.ColorDialog dialog = new System.Windows.Forms.ColorDialog();
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
Visual visual = sender as Visual;
while (visual != null) {
visual = VisualTreeHelper.GetParent(visual) as Visual;
if (visual is DataGridRow) {
DataGridRow row = visual as DataGridRow;
row.Background = new SolidColorBrush(System.Windows.Media.Color.FromArgb(dialog.Color.A, dialog.Color.R, dialog.Color.G, dialog.Color.B));
break;
}
}
}
}