nltd Ответов: 1

Изменение цвета фона столбца в datagrid в WPF во время выполнения


Дорогие Все,
У меня есть проблема, которую я пытался решить, но не смог. : (Вы можете мне помочь? Спасибо.
Мой проект используется WPF. И моя проблема заключается в следующем:
У меня есть datagrid, который имеет DataGridTextColumn, изменяющий цвет столбца в соответствии со статусом.Я могу показать его. Но эта проблема возникает, когда я меняю статус, обновляю datagrid. Он не изменил цвет этой колонки.
Я не знаю, как выразить, чтобы вы поняли. :( обноски, я хочу изменить цвет столбца в DataGrid во время работы проекта.
Вы можете предложить мне решение? Огромное спасибо.

Что я уже пробовал:

Я добавил данные:
private void add_data()
       {
            DataTable dt = new DataTable();
            ListItem_nv.Clear();
            dt = CMD_hengio.Show_hengio();
 foreach (DataRow Row in dt.Rows)
            {
                Item_hengio item= new Item_hengio();
                item.name_nv    = Row[1].ToString();
                item.ip_thuchien= Row[2].ToString();
                item.time       = ((DateTime)Row[3]).ToString("HH:mm:ss");// Row[3].ToString("HH:mm:ss"); 
                item.date_start = ((DateTime)Row[4]).ToString("dd/MM/yyyy");
                item.date_end   =((DateTime)Row[6]).ToString("dd/MM/yyyy");
                item.repeat     = Row[5].ToString();
                item.notes      = Row[9].ToString();
                item.status     = Row[8].ToString();
                item.tag_item = Row[0].ToString() + "*" + Row[7].ToString(); // add tag. 
                if (item.status == "Unfulfilled") item.Name_color = "Yellow";
                if (item.status == "Processing") item.Name_color = "Green";
                if (item.status == "Stop") item.Name_color = "Red";
                if (item.status == "Pause") item.Name_color = "YellowGreen";
                if (item.notes == "Error date")
                {
                    item.Color_Notes = "Red";
                }
                if (item.notes == "Error timer")
                {
                    item.Color_Notes = "Red";
                }
                else
                    item.Color_Notes = "#FF477067";
                ListItem_nv.Add(item); 
            }
            Datagrid.ItemsSource = ListItem_nv;
            ICollectionView view = CollectionViewSource.GetDefaultView(ListItem_nv);
            view.Refresh();
}

это xaml:

		    
                    

1 Ответов

Рейтинг:
1

Foothill

Попробуйте встроить свое форматирование в разметку
Условное форматирование WPF XAML


nltd

Большое спасибо Футхиллу за ваше решение. :)
Я попробовал ваше решение, и я мог бы отобразить цвет ячейки. Но я не могу обновить обновление при изменении во время работы.
частная btn_stop_Click недействительным(объект отправителя, RoutedEventArgs е)
{
добавить данные();
}
Мне нужен второй щелчок, datagrid меняет цвет ячейки.
У вас есть решение для меня? Большое вам спасибо!
С уважением,
NLTD

Foothill

Дает ли он вам какие-либо ошибки, когда должно произойти изменение цвета, или просто цвет фона просто не меняется?