после того, как я нашел большую помощь по stackoverflow, я теперь борюсь с проблемой, для которой пока не могу найти ответ. Моя цель заключается в следующем:
У меня есть таблица данных в приложении wpf / c #, заполненная цифрами. В зависимости от того, является ли фигура положительной или отрицательной, я хочу изменить шрифт переднего плана на зеленый или красный. Источником предметов для сетки данных является список моего собственного класса, который включает следующие элементы:
- описание строки
- список из 12 парных чисел под названием totalMoney
Я вручную сконфигурировал столбцы для сетки данных так, чтобы сначала отображалось описание, затем значение totalMoney [0], затем totalMoney [1] и так далее. После некоторых поисков я нашел способ изменить цвет переднего плана отдельных ячеек, основываясь на значениях здесь, на стековом потоке, через метод datatrigger плюс IValueConverter со следующим кодом:
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding totalMoney[2], Converter={StaticResource money}}" Value="1">
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding totalMoney[2], Converter={StaticResource money}}" Value="0">
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
<DataTrigger Binding="{Binding totalMoney[2], Converter={StaticResource money}}" Value="-1">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
Однако, как вы видите в коде, в WPF я должен ссылаться на привязку к отдельному элементу в моем списке (totalMoney [X]). Поэтому мне нужно вручную установить стиль для каждого столбца в моей сетке данных. Поскольку я хочу использовать этот стиль в нескольких сетях передачи данных, это кажется мне крайне непрактичным.
Поэтому мой вопрос - возможно ли определить стиль так, чтобы он менялся в зависимости от значения ячейки в целом? Или, может быть, есть совершенно другой способ достижения моей цели, который я упустил из виду?
Спасибо за вашу помощь.