Sag*_*b.g 1 c# wpf xaml datagrid mvvm
我在 wpf (mvvm) 项目上有一个数据网格。数据网格排序将添加到集合中的最后一项显示为第一行。我想为第一行着色(以突出显示添加到集合中的新项目)我已经看到了一些关于这种方式的类似问题,但没有一个与我正在寻找的真正相关。我曾尝试使用 IValueConverter,但它似乎不是我的正确路径,因为我需要获取第一行的唯一标识符并更改所有其余行以将其归类为“第一行”。
我的集合中项目的对象模型如下所示:
public class Messages
{
public string Date {get; set;}
public string Sender{get; set;}
public string Content{get; set;}
}
Run Code Online (Sandbox Code Playgroud)
*编辑忘记添加转换器代码......当然这会将所有行着色为红色,因为我不知道当集合更改时如何影响其他行。
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();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用RelativeSourcewith Modeset toPreviousData来确定 dataGrid 行是否是第一个。对于第一行 PreviousData 将返回 null。
在 ItemContainerStyle 中的 DataGridRow 上应用 DataTrigger:
<DataGrid>
<DataGrid.ItemContainerStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="LightBlue"/>
<Style.Triggers>
<DataTrigger
Binding="{Binding RelativeSource={RelativeSource Mode=PreviousData}}"
Value="{x:Null}">
<Setter Property="Background" Value="Green"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.ItemContainerStyle>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |