如何将数据库从数据库添加到WPF数据网格 [英] How do I add an image from Database to a WPF Data Grid

查看:92
本文介绍了如何将数据库从数据库添加到WPF数据网格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好。

我正在使用WPF-Datagrid

我需要从数据库向datagrid添加一个图像字段。以字符串形式存储在表中的图像 - 这只是文件名('* .png')。我必须将其转换为位图并使用表中的其他文本字段添加到datagrid。

有什么建议吗?

(.NET 3.5; WPF Toolkit feb 2010 3.5.50211)

Hello everyone
I'm working with the WPF-Datagrid
I need to add an image field to datagrid from database. Image stored in table in string type - this is file name only('*.png'). I have to convert it to bitmap and add to datagrid with other text fields from table.
any suggestions?
(.NET 3.5; WPF Toolkit feb 2010 3.5.50211)

推荐答案

I希望以下解决方案能为您提供帮助



主要特点:



1)DataTable:存储来自数据库的数据并将此数据与数据网格绑定

2)ValueConverter:将列值转换为指定的图像源

3)DataTemplate:具有图像类型的网格列的模板



1)DataTable:这里我使用静态表你可以从数据库中获取数据



DataTable dt = new DataTable( );

dt.Columns.Add(名称);

DataRow dr = dt.NewRow();

dr [名称] =tick;

dt.Rows.Add(dr);

grid1.ItemsSource = null;

grid1.ItemsSource = dt.DefaultView;



2)价值转换器



I Hope following solution will help you

Key Features:

1) DataTable : to store data from database and to bind this data with data grid
2) ValueConverter : Convert column value to specified image source
3) DataTemplate : Template for grid column having image type

1) DataTable : here i have used static table you can fetch data from database

DataTable dt = new DataTable();
dt.Columns.Add("Name");
DataRow dr = dt.NewRow();
dr["Name"] = "tick";
dt.Rows.Add(dr);
grid1.ItemsSource = null;
grid1.ItemsSource = dt.DefaultView;

2) Value Converter

[ValueConversion(typeof(string), typeof(SolidColorBrush))]
      public class StringConverter : IValueConverter
      {
          public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
          {

              string val = value.ToString();

              return "/FormWithTab;component/Images/" + val + ".png";
          }



          public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
          {

              throw new NotSupportedException();

          }
      }







3)DataTemplate






3) DataTemplate

<pre><window x:class="FormWithTab.Window2" xmlns:x="#unknown">
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:wpf="http://schemas.microsoft.com/wpf/2008/toolkit" Loaded="Window_Loaded"
        xmlns:local="clr-namespace:FormWithTab"
    Title="Window2" Height="300" Width="300">
    <window.resources>
        <local:stringconverter x:key="NameToStringConverter" xmlns:local="#unknown" />

        <datatemplate x:key="ImageColTemplate">
            <image x:name="img" stretch="None" horizontalalignment="Center" source="{Binding Name,  Converter={StaticResource NameToStringConverter}}" />
        </datatemplate>
      
    </window.resources>
    <grid>
        <wpf:datagrid x:name="grid1" verticalalignment="Top" height="150" autogeneratecolumns="False" xmlns:wpf="#unknown">
            <wpf:datagrid.columns>
                <wpf:datagridtemplatecolumn header="Image" celltemplate="{StaticResource ImageColTemplate}" />
            </wpf:datagrid.columns>
        </wpf:datagrid>
      
    </grid>
</window>





如果您需要完整的解决方案。我可以转发你。



If you need complete solution for this . i can forward you.


这篇关于如何将数据库从数据库添加到WPF数据网格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆