如何在运行时更改Wpf中的Datagrid行颜色?

时间:2012-08-23 13:28:32

标签: c# wpf wpfdatagrid

我正在使用WPF DataGrid并在运行时使用RowItem类添加行

 public class RowItem //Class
 {
     public int Rule_ID { get; set; }
     public string Rule_Desc { get; set; }
     public Int64 Count_Of_Failure { get; set; }
 }    

adding row at run time like :

dgValidateRules.Items.Add(new RowItem() { Rule_ID = ruleID, Rule_Desc = ruleDesc, Count_Of_Failure = ttlHodlings });

使用下面的“加载行”事件代码来更改数据网格行的颜色。但它不起作用。

private void dgValidateRules_LoadingRow(object sender, DataGridRowEventArgs e)
{
  for (int i = 1; i < dgValidateRules.Items.Count; i++)
  {
    if (((RowItem)dgValidateRules.Items[i]).Count_Of_Failure == 0)
      e.Row.Foreground = new SolidColorBrush(Colors.Black);
    else
      e.Row.Foreground = new SolidColorBrush(Colors.Red);
  }
}

有人可以告诉我解决方案吗?

2 个答案:

答案 0 :(得分:0)

因为它在那里排行事件,所以你可以在这里做一个条件:

    private void table_LoadingRow(object sender, DataGridRowEventArgs e)
    {
        if (((MyData)e.Row.DataContext).Module.Trim().Equals("SomeText"))
        {
            e.Row.Foreground = new SolidColorBrush(Colors.Red);
        }
    }

答案 1 :(得分:0)

您可以使用DataTriggerConverter

<DataGrid ItemsSource="{Binding YourItemsSource}">
    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow"> 
            <Style.Triggers>
                <DataTrigger Binding="{Binding Count_Of_Failure}" Value="0">
                    <Setter Property="Foreground" Value="Red"></Setter>
                </DataTrigger>
                <DataTrigger Binding="{Binding Count_Of_Failure}" Value="1">
                    <Setter Property="Foreground" Value="Green"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>
</DataGrid>