Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将映像添加到WPF数据网格_Wpf_Image_Datagrid - Fatal编程技术网

将映像添加到WPF数据网格

将映像添加到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

我无法在数据网格(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 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)