here is a solution for DataGridTextColumn
s. DataGridTextColumn creates TextBlock element to display cell value. TextBlock has string Text
property. Those TextBlocks can be accessed via DataGridCell Content
property, so resulting binding path is "Content.Text"
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},
Path=Content.Text, Mode=OneWay,
Converter={StaticResource greaterThanZeroDecimalConverter}}"
Value="True">
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},
Path=Content.Text, Mode=OneWay,
Converter={StaticResource greaterThanZeroDecimalConverter}}"
Value="False">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},
Path=Content.Text, Mode=OneWay}"
Value="0">
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
</Style.Triggers>
note {RelativeSource Self}
.
I also had to change Convert
method because Text is a string property and incoming value is string.
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double d;
if (value != null && value is string && double.TryParse(value.ToString(), out d))
{
return d > 0;
}
return null;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…