【发布时间】:2019-12-17 18:19:11
【问题描述】:
我必须从查询中转换信息数据,并根据从底层数据库读取的值显示图像。
假设我的查询中有这些数据:
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 自己自动生成列,并且我还尝试将它们添加到这个问题的已接受答案后面的代码中:
还有这个:
而我就是不明白。我知道我已经接近了,但我猜还是错过了显而易见的事情。
【问题讨论】:
-
还有一个类似的问题:stackoverflow.com/q/40358111/1506454
-
@ASh 这很有帮助!实际上只需要弄清楚如何让我的转换器从行中读取警报级别,以便分配正确的图像。比我第一次简单得多。我想我会更新我的代码示例以反映这些变化。