【发布时间】:2014-07-22 17:44:36
【问题描述】:
我有一个数据绑定的数据网格,但在绑定发生之前,我使用数据网格加载行事件处理程序根据满足的条件为每行的背景着色。我想删除它,我决定向未绑定的数据网格添加一个数据模板列(状态),但我希望根据使用 LoadingRow 事件满足的条件填充适当的图像。我不使用 DataTemplate 的原因是确定正确的 iamge 所需的日期比较。
我查看了几个示例,但不知道如何将图像添加到“状态”列的单元格中以包含每行的图像。我将非常感谢您的指导。
一如既往地感谢您的帮助,
XAML
<DataGrid AutoGenerateColumns="False" x:Name="schDataGrid" IsReadOnly="True" LoadingRow="schDataGrid_LoadingRow" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="STATUS" /> <-- Add Image Here -->
<DataGridTextColumn Binding="{Binding ITEMNUMBER}" Header="ITEMNUMBER" />
<DataGridTextColumn Binding="{Binding CODE}" Header="CODE" />
<DataGridTextColumn Binding="{Binding DESC}" Header="STD DESCRIPTION" />
<DataGridTextColumn Binding="{Binding DESCRIPTION}" Header="UNIQUE DESCRIPTION" />
<DataGridTextColumn Binding="{Binding SERIALNUMBER}" Header="SERIAL NUMBER" />
</DataGrid.Columns>
</DataGrid>
C#
private void schDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
var row = e.Row;
DataRowView rView = row.Item as DataRowView;
string DUEDATE = rView["DUEDATE"].ToString();
DateTime now = Convert.ToDateTime(DateTime.Now.ToString("dd/MM/yyyy"));
DateTime compareDate = Convert.ToDateTime(DUEDATE);
TimeSpan difference = now - compareDate;
if (difference.Days <= 0)
{
Image image = new Image();
var uriSource = new Uri(@"/main;component/Images/Icons/green.gif", UriKind.Relative);
image.Source = new BitmapImage(uriSource);
//Now Add the image to the DataGridTemplateColumn["STATUS"]
rItem["STATUS"] = image;
}
【问题讨论】: