[WPF] Toolkit DataGrid ImageColumn
От: Someone88  
Дата: 26.11.09 12:11
Оценка:
Добрый день!
Переписываю свой старый winforms на wpf.
Нужно что бы в колонке отображались картинки, но эти картинки зависели от данных с строке.
Чтобы добавить колонку с изображением делаю вот так.
            DataGridTemplateColumn col = new DataGridTemplateColumn();
            col.Header = String.Empty;
            FrameworkElementFactory factory =
               new FrameworkElementFactory(typeof (Image));

            factory.SetValue(Image.SourceProperty, System.Windows.Interop.Imaging.
                                                           CreateBitmapSourceFromHBitmap(
                                                           Images.Image1.GetHbitmap(),
                                                           IntPtr.Zero,
                                                           Int32Rect.Empty,
                                                           BitmapSizeOptions.FromEmptyOptions()));

            DataTemplate cellTemplate = new DataTemplate();
            cellTemplate.VisualTree = factory;
            col.CellTemplate = cellTemplate;


А каким образом можно менять изображение не пойму.
В Winforms я делал

     protected override void OnCellFormatting(DataGridViewCellFormattingEventArgs e)
     {
         if (e.ColumnIndex == 1 && e.DesiredType == typeof(System.Drawing.Image))
         {
                    int status = (int)this.Rows[e.RowIndex].Cells[1].Value;
                    switch (status)
                    {
                        case 1:
                            e.Value = Images.Image1;
                            break;
                        case 2:
                            e.Value = Images.Image2;
                            break;
                        case 3:
                            e.Value = Images.Image3;
                            break;
                    }
        }
       base.OnCellFormatting(e);
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.