我有一个问题。
我希望能够在C#中以编程方式编写所有的内容,而不是使用VS Designer。
因此,我正在创建一个图像和DataGrid(并将其作为MainWindow Grid的子项添加):
Image img = new Image();
Uri uri = new Uri(@"C:\d1.jpg");
img.Source = new System.Windows.Media.Imaging.BitmapImage(uri);
DataGrid dg = new DataGrid();
grid1.Children.Add(dg);
接下来我想举例添加4列,其中3列是文本,1列是图像。因此,首先需要创建一个包含样例数据的DataTable和DataRow:
DataTable dt = new DataTable();
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");
dt.Columns.Add("Column3");
dt.Columns.Add("Column4", typeof(Image)); // type of image!
DataRow dr = dt.NewRow();
dr[0] = "aaa";
dr[1] = "bbb";
dr[2] = "ccc";
dr[3] = img; // add a sample image
dt.Rows.Add(dr);
现在我有一个包含4列和1行数据的DataTable。
然后,我只需要像这样设置DataGrid的ItemsSource:
dg.ItemsSource = dt.DefaultView;
我做错了什么?为什么在最终的网格中,一行中有一个System.Windows.Controls.Image而不是真正的图片?我需要绑定它还是做些其他的操作?
所有的事情都需要通过编程来完成,没有使用设计师。
如何显示真正的图片而不是那个字符串?