C# 将映像添加到绑定的数据网格

C# 将映像添加到绑定的数据网格,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个数据绑定的datagrid,但在绑定发生之前,我使用datagrid loadingrow事件处理程序根据满足的条件为每一行的背景着色。我想删除它,并决定向datagrid添加一个datatemplatecolumn(STATUS),该列未绑定,但我希望根据使用LoadingRow事件满足的条件,使用适当的映像进行填充。我不使用DataTemplate的原因是确定正确的iamge所需的日期比较 我看了几个例子,但不知道如何将图像添加到Status列的单元格中,以包含每行的图像。我将非常感

我有一个数据绑定的datagrid,但在绑定发生之前,我使用datagrid loadingrow事件处理程序根据满足的条件为每一行的背景着色。我想删除它,并决定向datagrid添加一个datatemplatecolumn(STATUS),该列未绑定,但我希望根据使用LoadingRow事件满足的条件,使用适当的映像进行填充。我不使用DataTemplate的原因是确定正确的iamge所需的日期比较

我看了几个例子,但不知道如何将图像添加到Status列的单元格中,以包含每行的图像。我将非常感谢您的指导

谢谢你一如既往的帮助

XAML


C#

private void schDataGrid_LoadingRow(对象发送方,DataGridRowEventArgs e)
{
var行=e行;
DataRowView rView=行。项作为DataRowView;
字符串DUEDATE=rView[“DUEDATE”].ToString();
DateTime now=Convert.ToDateTime(DateTime.now.ToString(“dd/MM/yyyy”);
DateTime compareDate=Convert.ToDateTime(DUEDATE);
时间跨度差异=现在-比较;

如果(difference.Days如果状态是绑定到网格的同一对象的一部分,则仍然可以使用DataTemplate,如下所示:

  <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
          <Image Source="{Binding Status, Converter={StaticResource StatusToImageConvertor}}"/>
      </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>

请告诉我这是否对您有帮助

谢谢您的帮助Praveena,我对转换器的引用有问题,我收到以下错误“错误1”“转换器”是未声明的前缀。第6行,位置10。“XML无效”。您必须先在XAML中添加引用,如下所示:xmlns:converter=“clr namespace:;assembly=”
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;
            }
  <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
          <Image Source="{Binding Status, Converter={StaticResource StatusToImageConvertor}}"/>
      </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>
<converter:StatusToImageConvertor:Key="StatusToImageConvertor"/>
 public sealed class StatusToImageConvertor : IValueConverter
{

  public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {

    // The value here is your status being passed from XAML binding
        if (value is string)
        {
           if(value == "x") return "image1.png";
       if(value = "y") return "image2.png";
       else return "image3.png";

    }
    else return string.empty;   

    }

  public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}