如何从DataGrid c#wpf更改特定单元格的前景

时间:2016-04-06 09:58:11

标签: c# wpf xaml datagrid

要从DataGrid中查找特定单元格,我使用HERE中的代码,它可以正常工作。但是这段代码只解决了我的一半问题。

首先,我想找到一些特定的细胞,然后将前景更改为特定的颜色。

这是我的方法。但前景没有改变。

for (int i = 0; i < dataGrd.Items.Count; i++)
{
    for (int j = 0; j < dataGrd.Columns.Count; j++)
    {
        DataGridCell cell = GetCell(i, j);
        TextBlock tb = cell.Content as TextBlock;

        if (j == 1)
        {
            double measure = double.Parse(tb.Text);

            if (measure > 22.5)
            {
                cell.Foreground = Brushes.Red;
            }
        }       
    }
}

我从调试器开始,行cell.Foreground = Brushes.Red;正在运行,但是当我看到结果时,没有单元格有红色前景。

的Xaml:

<DataGrid BorderThickness="0" Background="Transparent" Name="grdFilter" Width="900" MinHeight="430" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" ColumnWidth="*" ItemsSource="{Binding Datas}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="True" IsReadOnly="True">
                <DataGrid.Columns>
                    <DataGridTextColumn FontSize="13" FontStyle="Italic" Binding="{Binding Path=Date}" Header="{catel:LanguageBinding ResourceName=DateTimesSplashScreen}" />  

                    <DataGridTextColumn FontSize="13" FontStyle="Italic" Binding="{Binding Path=AirTemperatureValue}" Header="{catel:LanguageBinding ResourceName=SensorOneColorSettings}" />

                    <DataGridTextColumn FontSize="13" FontStyle="Italic" Binding="{Binding Path=HumidityValue}" Header="{catel:LanguageBinding ResourceName=SensorTwoColorSettings}" />

                    <DataGridTextColumn FontSize="13" FontStyle="Italic" Binding="{Binding Path=FluidTemperatureValue}" Header="{catel:LanguageBinding ResourceName=SensorThreeColorSettings}">
                    </DataGridTextColumn>

                    <DataGridTextColumn FontSize="13" FontStyle="Italic" Binding="{Binding Path=LightValue}" Header="{catel:LanguageBinding ResourceName=SensorFourColorSettings}" />


                </DataGrid.Columns>
            </DataGrid>

编辑:现在,当我尝试修复时,我发现改变了前景但是在方法完成后没有保存。 如何保存前景的更改

1 个答案:

答案 0 :(得分:0)

您正在更改Cell前景色而不是TextBlock前景色

替换

cell.Foreground = Brushes.Red;

tb.Foreground = Brushes.Red;