按条件为行着色

本文关键字:条件 | 更新日期: 2023-09-27 18:00:49

这是我创建DataGrid:时的WPF代码

       <DataGrid x:Name="DGruta11" Height="365" Width="836" Canvas.Left="19" 
                     Canvas.Top="115" CanUserReorderColumns="False"
                     HorizontalGridLinesBrush="#FFD8D8D8"
                     VerticalGridLinesBrush="#FFD8D8D8"
                     IsReadOnly="True" >
       </DataGrid>

我用C#创建的数据表填充这个网格。

我总共得到了19排,我将永远收到这笔钱。第0、1、2行应为灰色粗体字母。

第3、4、5、6、7、8、9行应为浅灰色。

第10、11、12行应为白色。

第13、14、15、16、17、18行应再次为灰色。

其中的一部分,但使用相同的数据网格,如果单元格是数字,那么我希望该数字的格式为0.00("9.00","1.000.00","0.05"(

同样,从第2列开始,所有信息都应向右对齐。

我希望你能帮我解决这个问题。我感谢大家的帮助。

按条件为行着色

试试这个

<DataGrid ItemsSource="{Binding YourDataToBind}" AutoGenerateColumns="False" CanUserAddRows="False">
                <DataGrid.RowStyle>
                    <Style TargetType="DataGridRow">
                        <Setter Property="Background">
                            <Setter.Value>
                                <SolidColorBrush Color="{Binding YourDataToBind.ValueAsCondition, Converter={StaticResource YourValueToColorConverter}}"/>
                            </Setter.Value>
                        </Setter> 
                    </Style>
                </DataGrid.RowStyle>
                <DataGrid.Columns>
                    <DataGridCheckBoxColumn Header="ColumHeader" Binding="{Binding ValueInColum}" />
                    ...

您可以在c#中更改行的背景色。这里有一个关于如何做到这一点的很好的例子。如何更改datagridview中的行颜色?

基本上,您将在所有行中循环,并使用条件语句来确定应将哪种颜色应用于此行。

类似这样的东西:

int rowCount = 0;
foreach (DataGridViewRow row in DGruta11.Rows) 
{
    rowCount += 1;
    if (rowCount > 2 && rowCount < 10) 
    {
        row.DefaultCellStyle.BackColor = Color.LightGray; 
    }
}