在WPF中动态生成的DataGrid.Columns中显示图像

时间:2019-12-17 18:19:11

标签: c# wpf datagrid

我必须从查询中获取信息数据,并根据从底层数据库读取的值显示图像。

假设我的查询中没有此数据:

Identifiant|ProcessId|AlarmLevel
  BOUDA25  |   100   |    1
  BOUDA25  |   110   |    1
  BOUDA25  |   130   |    1
  BOUDA25  |   205   |    2
  BOUDA25  |   210   |    2

我现在要使以下WPF DataGrid显示由images/circle_orange.ico等表示的实际图像。 Programmatically Generated

到目前为止,我的代码类似于:

private void PopulateGrid(IEnumerable<AlarmeViewModel> alarmes) {        
    // Used to pivot the information data
    var table=new DataTable();

    // Generates the columns based on rows
    table.Columns.Add("Identifiant");
    table.Columns.Add("=>");

    alarmes.ForEach(a => a.Processes.ForEach(pid => table.Columns.Add(columnName:pid, type typeof(string))));

    // Generates the rows
    var images = new string[] {
        "images/circle_grey.ico",
        "images/circle_orange.ico",
        "images/circle_yellow.ico",
        "images/circle_red.ico",
        "images/circle_green.ico"        
    };

    alarmes.ForEach(a => {
        var row = table.NewRow();
        row[0] = a.Identifiant

        for(int i=0; i<a.Niveaux.Count; row[a.Processes[i]]=images[a.AlarmLevel[1]], i++);

        table.Rows.Add(row);
    });

    // Refreshes the DataGrid content
    alarmDataGrid.BeginInit();
    alarm.DataGrid.ItemsSource=table.DefaultView;
    alarmDataGrid.EndInit();
}

现在三天以来我一直处于困境,无法通过ImageSource绑定显示这些图像。

我试图让DataGrid自行自动生成列,并且还尝试通过将其添加到该问题的可接受答案后面的代码中:

这也是:

我就是不明白。我知道我已经接近了,但是我想我仍然很明显。

1 个答案:

答案 0 :(得分:1)

您可以处理CSE事件,并以编程方式创建一个包含AutoGeneratingColumn元素的DataGridTemplateColumn。试试这个:

Image
相关问题