窗口
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local1="clr-namespace:WpfApplication1.DateConverter"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<!--使用staticsuorce-->
<local1:DateConverter x:Key="dateConverter"></local1:DateConverter>
</Window.Resources>
<Grid>
<DataGrid x:Name="dg" Margin="0,0,0,40" ColumnWidth="*" AutoGenerateColumns="False" ItemsSource="{Binding MyDataObject}" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Number}" Width="40" ClipboardContentBinding="{x:Null}" Header="序号"/>
<DataGridTemplateColumn Width="600" Header="Contour">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding image,Converter={StaticResource dateConverter}}" />
<!--<Image x:Name="BindImg" Height="30" Width="30" Source="{Binding IsBindable,Converter={StaticResource dateConverter}}" />-->
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<MyDataObject> list = new List<MyDataObject>(); //用List存储每一行的数据
byte[] imageBuffer = File.ReadAllBytes("F:\\wpf2012\\WpfApplication1\\QQ浏览器截图.png");
list.Add(new MyDataObject() { Number = 0, image = imageBuffer }); //假设bmp0是一个BitmapImage类型文件
list.Add(new MyDataObject() { Number = 1, image = imageBuffer }); //再添加一行
list.Add(new MyDataObject() { Number = 2, image = imageBuffer });
dg.ItemsSource = list;
// IValueConversion(typeof(byte[]), typeof(BitmapImage)) ;
//this.ASPNET.ItemsSource = dt.DefaultView;
}
}
public class MyDataObject
{
public int Number { get; set; }
public byte[] image { get; set; }
}
}
转换器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1.DateConverter
{
//ValueConversion(typeof(byte[]), typeof(BitmapImage))]
[ValueConversion(typeof(byte[]), typeof(BitmapImage))]
public class DateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
byte[] img = null;
if (!string.IsNullOrEmpty(value.ToString()))
{
img = (byte[])value;
}
if (img == null)
{
return "/HDMSWpfManage;component/templet/images/defaulthead.jpg";
}
return ShowSelectedIMG(img); //以流的方式显示图片的方法
}
//转换器中二进制转化为BitmapImage datagrid绑定仙石的
private BitmapImage ShowSelectedIMG(byte[] img)
{
if (img != null)
{
//img是从数据库中读取出来的字节数组
//using (System.IO.MemoryStream ms = new System.IO.MemoryStream(img))
System.IO.MemoryStream ms = new System.IO.MemoryStream(img);
ms.Seek(0, System.IO.SeekOrigin.Begin);
BitmapImage newBitmapImage = new BitmapImage();
newBitmapImage.BeginInit();
newBitmapImage.StreamSource = ms;
newBitmapImage.EndInit();
return newBitmapImage;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
}
参考
https://q.cnblogs.com/q/79133/