我试图根据其值更改列的前景颜色。当我尝试静态设置Foreground时,它可以工作,但是当我使用转换器进行绑定时,则什么也没有发生。
这是一个小例子
<DataGrid Foreground="White" FontSize="13" x:Name="datagrid_results" AutoGenerateColumns="False" ItemsSource="{Binding DataGridTable,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="3,5,1.6,35" MaxHeight="260">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Width="*" Header="Minimum" Binding="{Binding Minimum,UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn IsReadOnly="True" Width="*" Header="Maximum" Binding="{Binding Maximum,UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn IsReadOnly="True" Width="100" Header="Pass-Fail" Binding="{Binding Pass_Fail,UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding Pass_Fail,Converter={StaticResource s2b}}" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
这是我的转换器:
public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo culture)
{
Brush myBrush = brushes.White;
string input = value as string;
switch (input)
{
case "Pass":
myBrush = brushes.LightGreen;
break;
case "Fail":
myBrush = brushes.Red;
break;
default:
myBrush = brushes.White;
break;
}
return myBrush;
}
奇怪的是,在调试此转换器时,画笔返回了正确的值。只是单元格未更改其文本颜色。但是,当我使用以下命令时:<Setter Property="Foreground" Value="Red" />
,我的单元格将更改其文本颜色。我可能会缺少什么吗?