public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (values != null && values.Count() == 3) { if (values[0] == DependencyProperty.UnsetValue || values[1] == DependencyProperty.UnsetValue || values[2] == DependencyProperty.UnsetValue) { return(Binding.DoNothing); } string columnName = values[0].ConvertToString(); DataRowView dataRow = values[1] as DataRowView; DataTable dataTable = values[2] as DataTable; if (columnName != null && dataRow != null && columnName != Constants.DatabaseTypeColumnName) { var isColumnPresent = DynamicColumn.GetIsColumnPresentColumnName(columnName); if (!dataRow[isColumnPresent].ConvertToBool()) { return(Brushes.Orange); } var isEqualColumnName = DynamicColumn.GetIsDataEqualColumnName(columnName); if (!dataRow[isEqualColumnName].ConvertToBool()) { return(Brushes.Red); } } } return(Binding.DoNothing); }
private DataTable ConvertToDataTable(SortedDictionary <string, CellComparison> allColumnDictionary) { DataTable dataTable = new DataTable(); var column = new DataColumn(Constants.DatabaseTypeColumnName); dataTable.Columns.Add(column); // Add Columns foreach (var cellComparison in allColumnDictionary) { column = new DataColumn(cellComparison.Value.ColumnName); dataTable.Columns.Add(column); column = new DataColumn(DynamicColumn.GetIsColumnPresentColumnName(cellComparison.Value.ColumnName)); column.DataType = typeof(bool); dataTable.Columns.Add(column); column = new DataColumn(DynamicColumn.GetIsDataEqualColumnName(cellComparison.Value.ColumnName)); column.DataType = typeof(bool); dataTable.Columns.Add(column); column = new DataColumn(DynamicColumn.GetIsVisibleColumnName(cellComparison.Value.ColumnName)); column.DataType = typeof(bool); dataTable.Columns.Add(column); } // Add Rows DataRow firstDbDataRow = dataTable.NewRow(); DataRow secondDbDataRow = dataTable.NewRow(); foreach (var columnComparisonDetail in allColumnDictionary) { var columnName = columnComparisonDetail.Value.ColumnName; // DATABASE firstDbDataRow[Constants.DatabaseTypeColumnName] = ConfigurationManager.AppSettings[Constants.AppSettingKeyDatabaseOneType]; secondDbDataRow[Constants.DatabaseTypeColumnName] = ConfigurationManager.AppSettings[Constants.AppSettingKeyDatabaseTwoType];; // Value firstDbDataRow[columnName] = columnComparisonDetail.Value.FirstDatabaseColumnValue; secondDbDataRow[columnName] = columnComparisonDetail.Value.SecondDatabaseColumnValue; // IsColumnPresent firstDbDataRow[DynamicColumn.GetIsColumnPresentColumnName(columnName)] = columnComparisonDetail.Value.IsColumnAvailableInFirstDatabase; secondDbDataRow[DynamicColumn.GetIsColumnPresentColumnName(columnName)] = columnComparisonDetail.Value.IsColumnAvailableInSecondDatabase; // IsDataEqual firstDbDataRow[DynamicColumn.GetIsDataEqualColumnName(columnName)] = columnComparisonDetail.Value.IsDataEqual; secondDbDataRow[DynamicColumn.GetIsDataEqualColumnName(columnName)] = columnComparisonDetail.Value.IsDataEqual; // IsVisible firstDbDataRow[DynamicColumn.GetIsVisibleColumnName(columnName)] = true; secondDbDataRow[DynamicColumn.GetIsVisibleColumnName(columnName)] = true; } dataTable.Rows.Add(firstDbDataRow); dataTable.Rows.Add(secondDbDataRow); return(dataTable); }