Solved

How I can bind Images to datagrid In wpf

Posted on 2010-09-17
7
1,961 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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Need a complete list of ASP.NET page load events 3 26
Turn on intranet settings 1 37
Run time Error 4 34
C# parent child form 5 17
After several hours of googling I could not gather any information on this topic. There are several ways of controlling the USB port connected to any storage device. The best example of that is by changing the registry value of "HKEY_LOCAL_MACHINE\S…
Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
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…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…

910 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now