В настоящее время я пытаюсь (в C#) покрасить ячейки DataGrid на основе их значения. В столбцах DataGrid установлены дни недели (с понедельника по пятницу), и сейчас я могу это сделать, но это очень много. Вот как это в настоящее время:Есть ли более эффективный способ использования триггеров в WPF/XAML?
<DataGrid Name="mapDisplay" ItemsSource="{Binding}" Margin="27,29,27,10" ColumnWidth="73">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- Check if cell has value of 0 in the 'Monday' column. -->
<Condition Binding="{Binding Path=Monday}" Value="0"/>
<Condition Binding="{Binding Column.DisplayIndex,RelativeSource={RelativeSource Self}}" Value="1"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="White" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- Check if cell has value of 1 in the 'Monday' column. -->
<Condition Binding="{Binding Path=Monday}" Value="1"/>
<Condition Binding="{Binding Column.DisplayIndex,RelativeSource={RelativeSource Self}}" Value="1"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="White" />
</MultiDataTrigger>
...
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
Как вы можете себе представить, делая это от значения 0 до значения 3 (моего максимума) за каждый день итогов недели в некотором чрезвычайно длительном коде XAML. Есть ли способ уменьшить длину и сделать мой код более эффективным или динамичным?
ОБНОВЛЕНИЕ: Это вы имеете в виду, @Freeman?
<dg:DataGrid.ItemContainerStyle>
<Style
TargetType="{x:Type dg:DataGridColumn}"
BasedOn="{StaticResource {x:Type dg:DataGridColumn}}">
<Setter
Property="Background"
Value="{Binding ItemColour}" />
</Style>
</dg:DataGrid.ItemContainerStyle>
Хотя в моем случае я бы использовал конвертер для преобразования значения в цвет?
Я бы Recommand вас есть эти логики на вашей виртуальной машине и просто связать 'Background' цвет' itemstemplate' в виду – Gopichandar