2015-12-04 3 views
0

Я пытаюсь изменить код за цветом строки DataGrid, когда возникает условие в этой строке. Что-то вроде:Изменить цвет фона «DataGrid» в коде за

private void Datagrid_LoadingRow(object sender, DataGridRowEventArgs e) 
{ 
    if((((System.Data.DataRowView)(e.Row.DataContext)).Row.ItemArray[3].ToString()) == "ERROR") 
     e.Row.Background = new SolidColorBrush(Colors.Red); 
    else 
     e.Row.Background = null; 
} 

Это очень просто, но это не работает:

  1. я получаю InvalidCastException на if линии.

  2. Даже если я ставлю одну строку с:

    e.Row.Background = new SolidColorBrush(Colors.Red);

    ... это не работает, и ни одна из линий не покраснеет.

--- ADD ---

1 Для первой задачи ошибка исходит из следующих отливать

(System.Data.DataRowView)(e.Row.DataContext)) 

где е происходит от

private void Datagrid_LoadingRow(object sender, DataGridRowEventArgs e) 

так событие правильно вызывается, но я не могу заставить элемент строки/столбца программно изменять фон или передний план.

  1. Я не могу изменить фон, но я могу изменить передний план. Если вы посмотрите на следующее изображение, вы увидите, что эти строки имеют разные цвета. Я ничего не поставил на purpouse, и в определении datagrid в xaml нет ничего особенного. Но именно по этой причине я не могу установить фон. Как я могу отменить это условие? enter image description here

XAML -

<DataGrid x:Name="dtgEventsPCDmis" Grid.Row="6" FontSize="12" Background="{x:Null}" BorderBrush="Gainsboro" VerticalContentAlignment="Stretch" BorderThickness="5" Margin="10,21.4,9.6,0" LoadingRow="Datagrid_LoadingRow" AutoGeneratingColumn="Datagrid_AutoGeneratingColumn" VerticalAlignment="Top" Height="139" RenderTransformOrigin="0.5,0.5" GridLinesVisibility="All"/> 

ответ

0

InvalidCastException могут быть отброшены, потому что DataContext не могли быть установлены еще и, следовательно, оно равно нулю, или потому, что ряд DataContext не одного и того же типа, что System.Data.DataRowView. Просто поставьте точку останова и проверьте значение и тип e.Row.DataContext.

Для установки фона в DataGridRow затем проверить:

WPF Datagrid set selected row

или

How to set the background color of a DataGrid row in code behind?

+0

см. Мой добавочный – Patrick

0

это работает для меня ..

e.Row.Background = Brushes.Red 

и invalidCast, Я совершенно уверен, что e.Row.DataContext не DataRowView, пожалуйста, отлаживайте и проверяйте, что вы пытаетесь сделать.

+0

см. Мой добавочный – Patrick

+0

показать свой xaml? – Muds

+0

Patrick

Смежные вопросы