Фон
Я использую VS2010, DataGrid (поставляемый с WPF) и вручную создаю строки и столбцы.Я устанавливаю различные цвета для рядов, в зависимости от их состояния (но для простоты, скажем, это был желтый).Это сработало, потому что datagrid использовал метки для отображения текста, и когда я установил фон для строки, он также отражается в виджете меток.
Однако я не мог ctrl + c (копировать) содержимое ячейки,поэтому теперь я создаю пользовательский шаблон для столбцов и использую текстовое поле для отображения данных.
Проблема
Texbox блокирует фон ячеек, поэтому я получаю (например) сетку данных с белымячейки (текстовые поля) с желтыми полями.
Вопрос
Как заставить текстовые поля (это мой случай) учитывать цвет фона ячеек?Я пытался использовать трюк и установить прозрачную кисть для всех текстовых полей, но я по-прежнему получаю белый фон в ячейках (текстовые поля).
Текущий код:
grid.BeginInit();
grid.Columns.Clear();
int i = 0;
var glass_brush = new SolidColorBrush(Color.FromArgb(255,0,0,0));
foreach (var db_col in query.FieldNames)
{
var template = new DataTemplate();
var elemFactory = new FrameworkElementFactory(typeof(TextBox));
elemFactory.SetBinding(TextBox.TextProperty, new Binding(String.Format("Visual[{0}]", i)));
// make the background transparent -- it does not work though
elemFactory.SetValue(TextBlock.BackgroundProperty,glass_brush);
template.VisualTree = elemFactory;
var col = new DataGridTemplateColumn();
col.CellTemplate = template;
col.IsReadOnly = true;
col.Header = db_col;
grid.Columns.Add(col);
++i;
}
{
grid.Items.Clear();
foreach (var db_row in diffs)
{
var row = new DataGridRow();
row.Item = db_row.Item1;
row.Background = colors[db_row.Item2];
grid.Items.Add(row);
}
}
grid.IsReadOnly = true;
grid.EndInit();