I'm creating a two data tables dynamically in my view model. before I'm displaying them in my view i'm comparing each cell value in one DataTable to the same cell in the second DataTable . My problem is that I want to provide the different cells different background color. How can I do it programtically ?
Here is the first DataGrid:
<GroupBox Header="Xml 1 Details" Margin="10,10,10,10" Grid.Row="1" Grid.ColumnSpan="4" Grid.Column="0">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<GroupBox x:Name="GridGroupBox"
Grid.Column="0"
Header="{Binding TableName}">
<DataGrid x:Name="DataGrid" Margin="5,5,5,5"
ItemsSource="{Binding GenericDataTable}"
attachedBehaviors:DataGridColumnsBehavior.BindableColumns="{Binding GridColumns}"
AutoGenerateColumns="False"
EnableRowVirtualization="False">
</DataGrid>
</GroupBox>
</Grid>
</ScrollViewer>
</GroupBox>
Second DataGrid:
<GroupBox Header="Xml 2 Details" Margin="10,20,10,10" Grid.Row="2" Grid.ColumnSpan="4" Grid.Column="0">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<GroupBox x:Name="GridGroupBox2"
Grid.Column="0"
Header="{Binding TableName}">
<DataGrid x:Name="DataGrid2" Margin="5,5,5,5"
ItemsSource="{Binding GenericDataTable2}"
attachedBehaviors:DataGridColumnsBehavior.BindableColumns="{Binding GridColumns2}"
AutoGenerateColumns="False"
EnableRowVirtualization="False"
/>
</GroupBox>
</Grid>
</ScrollViewer>
</GroupBox>
Creating them programatically:
private void GenerateFirstXmlDynamicColumns(DataTable dt, List<string> cols)
{
GridColumns = new ObservableCollection<DataGridColumn>();
foreach (DataColumn col in dt.Columns)
{
GridColumns.Add(new DataGridTextColumn
{
Header = col.ColumnName,
Binding = new Binding(col.ColumnName)
});
}
RaisePropertyChanged("GridColumns");
GenericDataTable = dt;
RaisePropertyChanged("GenericDataTable");
}
private void GenerateSecondXmlDynamicColumns(DataTable dt, List<string> cols)
{
GridColumns2 = new ObservableCollection<DataGridColumn>();
foreach (DataColumn col in dt.Columns)
{
GridColumns2.Add(new DataGridTextColumn
{
Header = col.ColumnName,
Binding = new Binding(col.ColumnName)
});
}
RaisePropertyChanged("GridColumns2");
GenericDataTable2 = dt;
RaisePropertyChanged("GenericDataTable2");
}
Here I'm comparing the cells and I want to change the background color of the different cells:
private void CompareData()
{
for (int i = 0; i < GenericDataTable.Rows.Count; i++)
{
for (int j = 0; j < GenericDataTable.Columns.Count; j++)
{
if (!GenericDataTable.Rows[i][j].Equals(GenericDataTable2.Rows[i][j]))//if cells are different
{
}
}
}
}