Solved

How I can bind Images to datagrid In wpf

Posted on 2010-09-17
7
1,983 Views
Last Modified: 2013-11-12
I use wpf datagrid  which gets source from database. I store Images as byte array in database. What can i do to see the images from database on datagrid ?
Thanks In advance
0
Comment
Question by:Zherquen
  • 5
7 Comments
 
LVL 29

Expert Comment

by:Gautham Janardhan
ID: 33699853
you can create a converter which will convert the byte array to an image source
0
 
LVL 29

Accepted Solution

by:
Gautham Janardhan earned 500 total points
ID: 33699881
something like this
public class ImageConverter: IValueConverter

{

#region IValueConverter Members

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

{

BitmapImage img = new BitmapImage();

using (MemoryStream stream = new MemoryStream(value as byte[])) 

{

      img.SetSource(stream);

} 

return img;

}


<Image Source="{Binding YourByteArray, Converter={StaticResource ImageConverter}"/>

Open in new window

0
 
LVL 29

Expert Comment

by:Kumaraswamy R
ID: 33699901
0
Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Author Comment

by:Zherquen
ID: 33699902
Hello gauthampj,
I have found many converter in c# but dont know how to use them in xaml code.
For Example :
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)

{
Byte[] bytes = value as
Byte[];


MemoryStream mem = new
MemoryStream(bytes);

mem.Write(bytes, 0, bytes.Length);

mem.Seek(0, SeekOrigin.Begin);


BitmapImage image = new
BitmapImage();

 

image.BeginInit();

image.DecodePixelWidth = 60;

image.CacheOption = BitmapCacheOption.OnLoad;

image.StreamSource = mem;

image.EndInit();


return image;

 

}

 


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

{

     return
null;

}

How can i relate the code with datagrid in xaml code?
0
 
LVL 29

Expert Comment

by:Gautham Janardhan
ID: 33699973
you need to add it as a resource and then refer it.. see sample below
0
 
LVL 29

Expert Comment

by:Gautham Janardhan
ID: 33700003
oops forgot to attach
 namespace TestWpf
 {
     public class ImageConverter : IValueConverter
    {
        #region IValueConverter Members
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            BitmapImage img = new BitmapImage();
            using (MemoryStream stream = new MemoryStream(value as byte[]))
            {
                img.StreamSource = stream;
            }

            return img;

        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}

/*XAML*/

    <Grid xmlns:local="clr-namespace:TestWpf">
        <Grid.Resources>
            <local:ImageConverter x:Key="Converter"/>
        </Grid.Resources>
        <Image Source="{Binding YourByteArray, Converter={StaticResource Converter}"/>
    </Grid>

Open in new window

0
 
LVL 29

Expert Comment

by:Gautham Janardhan
ID: 33700012
also don't forgot to replace the name space xmlns:local="clr-namespace:TestWpf" with the one where you put the converter
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

What my article will show is if you ever had to do processing to a listbox without being able to just select all the items in it. My software Visual Studio 2008 crystal report v11 My issue was I wanted to add crystal report to a form and show…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

860 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question