0

これは私のデータグリッドです。グリッド列に画像を表示したいのですが、画像をSystem.Windows.Media.Imaging.BitmapImage表示する代わりにテキストを表示しています。データグリッド列に画像を追加するにはどうすればよいですか?

これは私が試したことです:

Dictionary dict1=new Dictionary < string,object>();

string keyimage="Image";

object a1 = new BitmapImage();

a1=Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Information.Handle, Int32Rect.Empty, null);

dict1.Add(keyimage, a1);

これはデータグリッドのdict1役割を果たしますItemsource...........データグリッド列に表示される画像を作成するにはどうすればよいですか?

4

3 に答える 3

2

必ずを使用して、DataGridTemplateColumnそれに画像を入れてください。

辞書を使用しているので、次のように値をバインドします。

<Image Binding="{Binding Height="25" Width="50" Source="{Binding Value}" />
于 2013-01-17T11:49:22.040 に答える
0

Columnデータ型がitemsourceデータ型と一致しないと思います。グリッド列とitemsourceの両方で同じデータ型の画像を作成する必要があります。WPFプロジェクトでは、Imagesを使用して列データテンプレートを作成しました。

DataTable dtab = new DataTable();
dtab.Columns.Add("imageColumn", typeof(BitmapImage)); 
//Uploading dtab with Images from DataBase

FrameworkElementFactory factory = new FrameworkElementFactory(typeof(Image));
Binding bind = new System.Windows.Data.Binding("imageColumn");
factory.SetValue(Image.SourceProperty, bind);
DataTemplate cellTemplate = new DataTemplate() { VisualTree = factory };
DataGridTemplateColumn imgCol = new DataGridTemplateColumn() 
{
  Header="image",
  CellTemplate = cellTemplate
};
DataGrid dg = new DataGrid();
dg.Columns.Add(imgCol);
dg.ItemsSource = dtab.DefaultView;

この助けを願っています

于 2013-01-17T11:45:12.367 に答える
0

リソースフォルダのプロジェクトに画像を追加します

その後、DataGridBindイベントで以下のコーディングを試してください。ここに画像のロゴを追加しました...

DataGridViewImageColumn imageColoumn = new DataGridViewImageColumn();
        imageColoumn.HeaderText = "Img";
        imageColoumn.Image = null;
        imageColoumn.Name = "DataPic";
        imageColoumn.Width = 150;
        dataGridView1.Columns.Add(imageColoumn);

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            DataGridViewImageCell cell = row.Cells[1] as DataGridViewImageCell;
            cell.Value = (System.Drawing.Image)Properties.Resources.logo;
        }
于 2013-01-17T11:47:27.127 に答える