将映像添加到WPF数据网格
我无法在数据网格(WPF)中显示图像。。。有什么想法吗 WinForms DataGridView中的sooooooo轻松-叹气 数据表将映像添加到WPF数据网格,wpf,image,datagrid,Wpf,Image,Datagrid,我无法在数据网格(WPF)中显示图像。。。有什么想法吗 WinForms DataGridView中的sooooooo轻松-叹气 数据表 Dim DGV As CustomControl.DGVx = ImagesItemsGrid.FindName("ImagesItems_DGV") Dim DS As DataSet = e.Result Dim DT As DataTable = DS.Tables(0).Copy
Dim DGV As CustomControl.DGVx = ImagesItemsGrid.FindName("ImagesItems_DGV")
Dim DS As DataSet = e.Result
Dim DT As DataTable = DS.Tables(0).Copy
Dim vDT As New DataTable
With vDT.Columns
.Add("ID", GetType(Integer))
.Add("Name", GetType(String))
.Add("Description", GetType(String))
.Add("Image", GetType(Image))
End With
形象
纵队
For Each Col As DataColumn In vDT.Columns
Dim vDataType As String = Col.DataType.ToString
Select Case vDataType
Case "System.Int32"
DGV.Columns.Add(New DataGridTextColumn With {.Header = Col.ColumnName, .Binding = New Binding(String.Format("[{0}]", Col.ColumnName))})
Case "System.Windows.Controls.Image"
Dim ImageCol As New DataGridTemplateColumn
ImageCol.Header = Col.ColumnName
Dim vFactory As New FrameworkElementFactory(GetType(Image))
Dim vBinding As New Binding(String.Format("[{0}]", Col.ColumnName))
vBinding.Mode = BindingMode.OneWay
vFactory.SetValue(Image.SourceProperty, vBinding)
Dim vCellTemplate As New DataTemplate
vCellTemplate.VisualTree = vFactory
ImageCol.CellTemplate = vCellTemplate
DGV.Columns.Add(ImageCol)
Case Else
Dim DGTC As New DataGridTextColumn
With DGTC
.Header = Col.ColumnName
.Binding = New Binding(String.Format("[{0}]", Col.ColumnName))
End With
DGV.Columns.Add(DGTC)
End Select
Next
资料
文本数据按其应有的方式显示,但是,尽管列在那里,图像却没有显示任何内容…结果表明,答案只是将“图像”保留为Byte() 它现在起作用了
Case "System.Byte[]"
Dim ImageTemp As New DataTemplate
Dim ImageCol As New DataGridTemplateColumn
Dim vFactory As New FrameworkElementFactory(GetType(Image))
Dim vBinding As New Binding(Col.ColumnName)
vFactory.SetBinding(Image.SourceProperty, vBinding)
ImageTemp.VisualTree = vFactory
ImageCol.CellTemplate = ImageTemp
DGV.Columns.Add(ImageCol)
DS.Dispose()
DGV.DataContext = vDT
DGV.ItemsSource = vDT.DefaultView
Case "System.Byte[]"
Dim ImageTemp As New DataTemplate
Dim ImageCol As New DataGridTemplateColumn
Dim vFactory As New FrameworkElementFactory(GetType(Image))
Dim vBinding As New Binding(Col.ColumnName)
vFactory.SetBinding(Image.SourceProperty, vBinding)
ImageTemp.VisualTree = vFactory
ImageCol.CellTemplate = ImageTemp
DGV.Columns.Add(ImageCol)