Csharp/C#教程:如何在Datagrid中为第一行设置颜色分享


如何在Datagrid中为第一行设置颜色

我在wpf(mvvm)项目上有一个datagrid。 datagrid排序显示作为第一行添加到集合的最后一项。 我想为第一行着色(为了突出显示添加到集合中的新项目)我已经看到了一些关于这种方式的类似问题,但它们都没有真正与我正在寻找的相关。 我试图使用IValueConverter,但它似乎不适合我,因为我需要获得第一行的唯一标识符并更改所有其余行,以便将其归类为“第一行”。

我对集合中项目的对象模型如下所示:

public class Messages { public string Date {get; set;} public string Sender{get; set;} public string Content{get; set;} } 

*编辑忘记添加转换器代码…当然这会将所有行着色为红色,因为我不知道如何在集合更改时影响其他行。

 class DateToColorConverter : IValueConverter { object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (Convert.ToDateTime(value) >= DateTime.Now.AddMinutes(-1)) { return "Red"; } else return "Yellow"; } object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } 

您可以将RelativeSourceMode设置为PreviousData一起使用,以识别dataGrid行是否为第一行。 对于第一行,PreviousData将返回null。

在ItemContainerStyle中的DataGridRow上应用DataTrigger:

      

如果您的数据类使用某种Id字段,则可以执行简单的解决方案。 假设新添加的对象的Id-1 ,或者00000000-0000-0000-0000-000000000000 (要在成功保存时更新/设置)。 在这种情况下,您可以使用简单的DataTrigger来更改这些项的Background

         

在您的模型中添加一个bool,它将指示添加的最后一个元素:

  public class Messages { public string Date {get; set;} public string Sender{get; set;} public string Content{get; set;} public string IsNew {get; set;} } 

并根据该属性设置DataGridRow的样式:

    

在上面的代码中,蓝色将是默认样式,红色是新行

上述就是C#学习教程:如何在Datagrid中为第一行设置颜色分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

    

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1030233.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐