我一直在寻找一个更好的答案来解决我的问题,即使我解决了它(不是很优雅),我想知道是否还有其他办法。 我继承了一个我无法修改的项目,我的意思是,我只能添加一些其他属性或覆盖方法,但不能更改基类或接口。
此项目包含一个继承WPF网格的类,用于修改行为的某些方面。我必须添加一个带有图像的新列(按代码)。每个图像都已存储到资源程序集中并通过静态属性声明,例如,我需要的图标声明如下:
MyIcon.Source="{x:Static images:Common.Size_22.icon}"
我需要在我的专栏中使用此图标,我尝试通过包中的各种声明,但它不起作用。最后我决定嵌入这个Bitmap通过属性发送它:
<mygrid:MyGridControl Model="{Binding}" Refresh="{Binding Refresh}"
CommentsImageSource="{x:Static images:Common.Size_22.icon}" />
当我创建图像单元格时,我还必须使用Bitmap和BitmapImage之间的转换创建图像对象并设置源
image.Source = ToBitmapSource((System.Drawing.Bitmap)CommentsImageSource);
它有效,但我对此决议感到非常失望,有没有更好的方法呢?我无法引用源文件以避免按属性发送Bitmap。
答案 0 :(得分:5)
如果您有机会在代码中分配ImageSource,我会使用BitmapToBitmapSource(Resources.image_name)
和
public static BitmapSource BitmapToBitmapSource(Bitmap bitmap)
{
return Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
}
这将创建一个BitmapSource,然后您可以将其指定为控件的ImageSource。