Способ сделать это в «чистом» WPF состоит в том, чтобы определить ItemContainerStyle
с DataTrigger
:
<DataGrid x:Name="EventLogsDataGrid"
AutoGenerateColumns="False"
Items="{Binding LogsData}"
CanUserReorderColumns="True"
CanUserResizeColumns="True"
IsReadOnly="True">
<DataGrid.ItemContainerStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Importance}" Value="HIGH">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.ItemContainerStyle>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Id}"
Header="ID"
Width="Auto"/>
<DataGridTextColumn Binding="{Binding Content}"
Header="Content"
Width="Auto"/>
<DataGridTextColumn Binding="{Binding CreationDate}"
Header="Date Time"
Width="Auto"/>
<DataGridTextColumn Binding="{Binding Source}"
Header="Source"
Width="Auto"/>
<DataGridTextColumn Binding="{Binding Importance}"
Header="Priority"
Width="Auto"/>
</DataGrid.Columns>
</DataGrid>
Но поскольку Avalonia не поддерживает триггеры, вам, возможно, придется обрабатывать событие LoadingRow
примерно так, чтобы программно установить свойство Background
:
void dataGrid_LoadingRows(object sender, DataGridRowEventArgs e)
{
var dataObject = e.Row.DataContext as YourDataObject;
if (dataObject != null && dataObject.Importance == "HIGH")
e.Row.Background = Brushes.Red;
}