如何绑定Xaml中Properties.Resources的图像?

时间:2011-04-28 20:39:54

标签: c# .net wpf image xaml

我将一些图片添加到Properties.Resources,我可以在其中访问它们:

Properties.Resources.LayerIcon;

并希望在Xaml中使用它,但不知道如何执行此操作。

我知道有不同的方式将图像添加到WPF项目中,但我需要使用Properties.Resources,因为这是我找到图像显示位置的唯一方法,当应用程序通过反射启动时

1 个答案:

答案 0 :(得分:10)

Properties.Resources中的图片属于System.Drawing.Bitmap,但WPF使用System.Windows.Media.ImageSource。您可以创建转换器:

[ValueConversion(typeof(System.Drawing.Bitmap), typeof(ImageSource))]
public class BitmapToImageSourceConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var bmp = value as System.Drawing.Bitmap;
        if (bmp == null)
            return null;
        return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                    bmp.GetHbitmap(),
                    IntPtr.Zero,
                    Int32Rect.Empty,
                    BitmapSizeOptions.FromEmptyOptions());
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

使用如下:

<Image Source="{Binding Source={x:Static prop:Resources.LayerIcon}, Converter={StaticResource bitmapToImageSourceConverter}}" />

确保您的资源设置为公开而非内部。