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