Я использую набор инструментов xceed datagrid и хочу установить основной цвет определенных ячеек в зависимости от значений других ячеек. Мои источники данных itemsSource - это список элементов пользовательского класса, который выглядит примерно так:
public class myclass
{
…
Property A
Property B
Property C
...
}
Мое условие для изменения цветов следующее: если значение A больше, чем значение Bячейка, отображающая B, должна иметь красный цвет переднего плана. Если A равно B, цвет должен быть синим, а если A меньше B, цвет должен быть зеленым. То же самое касается A и C.
Я пробовал несколько апрошей с разными уровнями успеха, но у меня пока ничего не получалось.
Я думаю, что моей самой успешной попыткой было определение стиля для DataCellв xaml:
<Style TargetType="{x:Type xcdg:DataCell}" >
<Setter Property="Foreground" >
<Setter.Value>
<Binding RelativeSource="{RelativeSource AncestorType={x:Type xcdg:DataRow}}" Path="DataContext"
Converter="{StaticResource IsValueIoConverter}"/>
</Setter.Value>
</Setter>
с преобразователем, который принимает Datacontext, который является объектом myclass, и решает, какой цвет выбрать.
Чтобы заставить его работать как для B, так и для CI, попытался использовать триггеры стилей и дать конвертеру параметр, чтобы различать мои дела, но я не могу заставить его работать. Моя проблема состоит в том, чтобы определить, из какого столбца происходит ячейка. Я пытался использовать имена, но у меня это не сработало.
Я посмотрел старые форумы xceed, но они использовали свойства в модели представления, чтобы выбирать между цветами, поэтому их подход не работал для меня:
https://xceed.com/forums/topic/change-CELL-COLOR-in-Datagrid/ https://xceed.com/forums/topic/Programmatically-changing-individual-DataCell-colours-based-on-data-in-other-DataRows/