我将一些图片添加到Properties.Resources
,我可以在其中访问它们:
Properties.Resources.LayerIcon;
并希望在Xaml中使用它,但不知道如何执行此操作。
我知道有不同的方式将图像添加到WPF项目中,但我需要使用Properties.Resources
,因为这是我找到图像显示位置的唯一方法,当应用程序通过反射启动时
答案 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}}" />
确保您的资源设置为公开而非内部。