Link the image to the datagrid using the resources


I am trying to retrieve the image from resource file and tryin to bind it to the datagrid of my WPF application.

The datagrid is somewhat like this:

<DataGridTemplateColumn Header="Image" Width="45">
                        <Image  Source="{Binding Path=Icon}" />

And Image is a property of type image of my MVVm class like this:

 public Image Icon
        get { return _licenseImage; }
        set { _licenseImage = value;

And in the code behind Im tryin to do something like this to get image from resource file and tryin to bind it to datagrid column.

ResourceManager resourceManager =
        new ResourceManager("Resources.Images", Assembly.GetExecutingAssembly());
BitMap bitmap = resourceManager.GetObject("okimage") as BitMap;

Image image = bitmap;
return image;

I can see that image is populated but it is not displaying in the grid.

You should bind to an ImageSource instead of Image.

we use this helper class:

public static class ImageSourceHelper
    public static ImageSource GetResourceImage(string resourcePath)
        return GetResourceImage(Assembly.GetCallingAssembly(), resourcePath);

    public static ImageSource GetResourceImage(Assembly resourceAssembly, string resourcePath)
        if (string.IsNullOrEmpty(resourcePath)) return null;

        var assembly = resourceAssembly.GetName().Name;
        const string uriFormat = "pack://application:,,,/{0};component/{1}";

        if (!UriParser.IsKnownScheme("pack")) new System.Windows.Application();

        var uri = new Uri(string.Format(uriFormat, assembly, resourcePath), UriKind.RelativeOrAbsolute);

        return BitmapFrame.Create(uri);

    public static ImageSource ConvertFromGdiBitmap(Bitmap bitmap)
        return Common.SystemAbstraction.Media.ImageConverter.ConvertToBitmapSource(bitmap);

    public static Bitmap ConvertToGdiBitmap(ImageSource imageSource)
        return Common.SystemAbstraction.Media.ImageConverter.ConvertToBitmap(imageSource as BitmapSource);

It creates an ImageSource from Bitmap or resource images.

Usage is

img.Source = ImageSourceHelper("Path/To/Your/Image.png");


var resourceAssembly = // get resource assembly...
img.Source = ImageSourceHelper(resourceAssembly, "Path/To/Your/Image.png");

if the image is contained in an other assembly than the currently calling assembly.

The path of your image is the path starting at the project file root of your assembly. Say you have an folder images your path will be "images/somepicture.png".