在WPF DataGrid上显示来自Database的图像

时间:2016-01-22 11:25:13

标签: c# wpf wpfdatagrid

我想在数据库的DataGrid中显示图像,而我正在使用WPF

[like this]

我可以检索图像名称,如图像列中所示,但我无法显示它。

<DataGrid.Columns>
    <DataGridTextColumn Header="ID" Binding="{Binding Path=Studentid}"/>
        <DataGridTemplateColumn Header="Picture" Width="50">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Image Stretch="Fill" Source="{Binding Images/Students/ImageColumnNameInDatabase}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
 </DataGrid.Columns>

我的c#代码用于填充datagrid

conn = new SqlConnection(connstring);
conn.Open();
cmd = new SqlCommand("Select * From AddStudentTb", conn);
try
{
    DataGridView dv = new DataGridView();
    SqlDataAdapter da = new SqlDataAdapter(cmd);

    da.Fill(dt);
    datagridv.ItemsSource = dt.DefaultView;
}
finally
{
    conn.Close();
}

2 个答案:

答案 0 :(得分:0)

尝试在DataTemplate中绑定图像源,例如

<DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True">
   <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
           <Image Source="{Binding Image}" />
      </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
 </DataGridTemplateColumn>

或者您可以参考this问题。

答案 1 :(得分:0)

这就是我所做的 使用这样的图像控件在数据网格中添加数据模板

            <DataGridTemplateColumn Header="File Type" Width="*">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Image Height="25" Width="50" Source="{Binding FileIcon}"  />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

如您所见,我的图像绑定了一个名为“ FileIcon”的属性,该属性在此类Version中使用

            public class Version
            {
              public string FileIcon { get; set; }
            }

现在只需要做的就是绑定,提供指向“ FileIcon”的路径并像这样更新DataGrid的ItemSource

            ObservableCollection<Version> items = new ObservableCollection<Version>();

            items.Add(new Version()
            {
                FileIcon = "Your Database Variable",
            });
            YourDataGrid.ItemsSource = null;
            YourDataGrid.ItemsSource = items;