 <p>Here is the solution :</p> <p><pre> Create a MultiConverter:</p> <pre><code> public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var dataContext = values[0]; var dg = (DataGrid)values[1]; var i = (DataGridCell)values[2]; var col = i.Column.DisplayIndex; var row = dg.Items.IndexOf(i.DataContext); if (row &gt;= 0 &amp;&amp; col &gt;= 0) { DataTable td1 = ((CheckXmlAppWpf.ViewModel.MainWindowViewModel) (dataContext)).GenericDataTable; DataTable td2 = ((CheckXmlAppWpf.ViewModel.MainWindowViewModel)(dataContext)).GenericDataTable2; if (!td1.Rows[row][col].Equals(td2.Rows[row][col])) { GetCell(dg, row, col).Background = Brushes.Yellow; } } return SystemColors.AppWorkspaceColor; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new System.NotImplementedException(); } } </code></pre> <p>Use it in the xaml:</p> <code>&lt;DataGrid x:Name="DataGrid" Margin="5,5,5,5" ItemsSource="{Binding GenericDataTable}" attachedBehaviors:DataGridColumnsBehavior.BindableColumns="{Binding GridColumns}" AutoGenerateColumns="False" EnableRowVirtualization="False"&gt; &lt;DataGrid.Resources&gt; &lt;Style TargetType="DataGridCell"&gt; &lt;Setter Property="Background"&gt; &lt;Setter.Value&gt; &lt;MultiBinding Converter="{StaticResource NameToBrushMultiValueConverter}" &gt; &lt;MultiBinding.Bindings&gt; &lt;Binding RelativeSource="{RelativeSource AncestorType=Window}" Path="DataContext" /&gt; &lt;Binding RelativeSource="{RelativeSource AncestorType=DataGrid}"&gt;&lt;/Binding&gt; &lt;Binding RelativeSource="{RelativeSource Self}"/&gt; &lt;/MultiBinding.Bindings&gt; &lt;/MultiBinding&gt; &lt;/Setter.Value&gt; &lt;/Setter&gt; &lt;/Style&gt; &lt;/DataGrid.Resources&gt; &lt;/DataGrid&gt; </code></pre> <p></p>