我必须从查询中获取信息数据,并根据从底层数据库读取的值显示图像。
假设我的查询中没有此数据:
Identifiant|ProcessId|AlarmLevel
BOUDA25 | 100 | 1
BOUDA25 | 110 | 1
BOUDA25 | 130 | 1
BOUDA25 | 205 | 2
BOUDA25 | 210 | 2
我现在要使以下WPF DataGrid显示由images/circle_orange.ico
等表示的实际图像。
到目前为止,我的代码类似于:
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自行自动生成列,并且还尝试通过将其添加到该问题的可接受答案后面的代码中:
这也是:
我就是不明白。我知道我已经接近了,但是我想我仍然很明显。
答案 0 :(得分:1)
您可以处理CSE
事件,并以编程方式创建一个包含AutoGeneratingColumn
元素的DataGridTemplateColumn
。试试这个:
Image