Я пробовал много разных вещей, чтобы изменить цвет ячейки для строки, которая возвращает «1» из определенного столбца. Во всех своих попытках я упирался в кирпичную стену.
Вот что я смотрю — это мой выбор, если в столбце указано «1»:
Мой xaml для значения JobId
if true.
<DataGrid.RowStyle>
<Style TargetType = "DataGridRow">
<Setter Property = "IsHitTestVisible" Value = "False"></Setter>
<Style.Triggers>
<DataTrigger Binding = "{Binding Suspended}" Value = "Running">
<Setter Property = "Background" Value = "#FFEA2B0D"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns >
<DataGridTextColumn Binding = "{Binding Id}" Width = "40" Header = " Job ID " Foreground = "Black" IsReadOnly = "True" >
<DataGridTextColumn.HeaderStyle>
<Style TargetType = "{x:Type DataGridColumnHeader}">
<Setter Property = "Background" Value = "#FF8A8A8A"/>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
string lbcompjob = ("SELECT * FROM " + Table + " WHERE [cancled] = 1");
SqlCommand cmd = new SqlCommand(lbcompjob, conn);
{
try
{
conn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
string can = dr[0].ToString();
if (can == "1")
{
// If True change row color
}
}
}
}
catch (Exception ex)
{
}
}
Без «объекта данных» в качестве ссылки на источник остается лишь догадываться, каковы имена свойств. Привязка ячейки свойства «get», возвращающая цвет, могла бы положить всему этому конец.
Просто добавьте триггер к RowStyle
:
<DataGrid.RowStyle>
<Style TargetType = "DataGridRow">
<Setter Property = "IsHitTestVisible" Value = "False" />
<Style.Triggers>
<DataTrigger Binding = "{Binding Suspended}" Value = "Running">
<Setter Property = "Background" Value = "#FFEA2B0D"/>
</DataTrigger>
<!-- Add your trigger here -->
<DataTrigger Binding = "{Binding MyColumn}" Value = "1">
<Setter Property = "Background" Value = "Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
Итак, я перестроил его и считаю, что у меня возникла конфликтная проблема с загрузкой сетки данных. конн.Открыть(); SqlDataAdapter sda = новый SqlDataAdapter (cmd); DataTable dat = новый DataTable(Таблица); sda.Fill(дат); dataview.ItemsSource = dat.DefaultView; конн.Закрыть(); dataview.ItemsSource = значение ячейки; cellvalue.Add(new CellColor {cancled = Brushes.Red});
<DataGridTextColumn Binding = "{Binding Status}" Width = "10*" Header = " Status " Foreground = "Black" IsReadOnly = "True" Visibility = "Visible">
<DataGridTextColumn.HeaderStyle>
<Style TargetType = "{x:Type DataGridColumnHeader}">
<Setter Property = "Background" Value = "#FF8A8A8A"/>
</Style>
</DataGridTextColumn.HeaderStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType = "DataGridCell">
<Style.Triggers>
<DataTrigger Binding = "{Binding cstatus}" Value = "1"> // Binding to sql column ----
<Setter Property = "Background" Value = "#FFFF1515"/>
</DataTrigger>
<DataTrigger Binding = "{Binding cancled}" Value = "1"> // Binding to sql column ----
<Setter Property = "Background" Value = "#FFEC6100"/>
</DataTrigger>
<DataTrigger Binding = "{Binding job_completed}" Value = "1"> // Binding to sql column ----
<Setter Property = "Background" Value = "#FF009802"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
На этом примере
DataGridTextColumn Binding = "{Binding Status}
= строка, отображаемая в DataGrid.
<DataTrigger Binding = "{Binding cstatus}" Value = "1">
— это строки в вашей базе данных, которые ищут значение.
Итак, в этом случае у нас есть строка в нашей сетке данных, которая помечена статусом. и если какие-либо условия соблюдены, эта строка изменит цвет на соответствующий цвет.
Как сейчас написано, ваш ответ неясен. Пожалуйста, отредактируйте , чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Более подробную информацию о том, как писать хорошие ответы, вы можете найти в справочном центре.
«измените цвет ячейки для строки, которая возвращает «1» из определенного столбца» — Почему бы вам не изменить этот столбец? Ваш вопрос не содержит много полезной информации.