Member 12876243 Ответов: 1

Wpf изменение цвета фона строки datagrid на основе двух временных типов данных


В моей базе данных "JobTimeStart" и "JobTimeFinish" хранятся как типы данных "Time". Мне нужно, чтобы цвет фона строки изменился на красный в моей DataGrid, если "JobTimeStart" находится в 1 часе езды от "JobTimeFinish".

Я сделал триггер для своей колонки "JobDate", чтобы, если она совпадает с сегодняшней датой, она меняла цвет на оранжевый. Я пытался понять, могу ли я сделать это таким же образом, используя триггеры, но мне не удалось найти ничего похожего на то, что я хочу.

 <DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
<DataGridTextColumn Header="Job" Binding="{Binding JobType}"/>
<DataGridTextColumn Header="Date" Binding="{Binding Path=JobDate, StringFormat=\{0:dd/MM/yyyy\}}" x:Name="JobDate"/>
<DataGridTextColumn Header="Start Time" Binding="{Binding JobTimeStart}"/>
<DataGridTextColumn Header="Finish Time" Binding="{Binding JobTimeFinish}" x:Name="JobTimeFinish"/>
</DataGrid.Columns>


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

Я сделал триггер для своей колонки "JobDate", чтобы, если она совпадает с сегодняшней датой, она меняла цвет на оранжевый. Я пытался понять, могу ли я сделать это таким же образом, используя триггеры, но мне не удалось найти ничего похожего на то, что я хочу.

<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
    <Setter Property="Height" Value="40"></Setter>
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding JobDate.Date}" Value="{x:Static System:DateTime.Today}">
                <Setter Property="Background" Value="#ff8d00"/>
            </DataTrigger>
        </Style.Triggers>
</Style>
</DataGrid.RowStyle>

1 Ответов

Рейтинг:
11

Maciej Los

Вы можете написать пользовательские IValueConverter чтобы изменить фон строки в зависимости от даты. Видеть: Преобразование значений с помощью IValueConverter - полный учебник по WPF[^]


Maciej Los

И...