Мне нужно получить URL-адрес изображения из базы данных, привязать его к бизнес-объекту, преобразовать его в растровое изображение и перевести его в словарь ресурсов. Словарь ресурсов используется как библиотека, и я не могу его изменить.C#/WPF Получение изображений из базы данных и их отображение
База данных состоит из одной таблицы с тремя столбцами: id, name, url. Это локальная база данных SQL CE 3.5. Я хочу иметь возможность показывать все изображения одновременно.
То, что я успел написать:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Collections.ObjectModel;
using System.Windows.Media.Imaging;
using System.Windows;
using System.Windows.Media;
namespace Library.Components
{
public class ComponentsList : ObservableCollection<Components>
{
public ComponentsList()
{
String connString = @"Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source=local_source";
String query = @"SELECT id, name, url FROM GraphicComponents";
// Fill the Set with the data
using (SqlConnection conn = new SqlConnection(connString))
{
try
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = query;
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
this.Add(new Components(rdr));
}
}
finally
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
}
}
public class Components
{
int _componentID;
string _name;
BitmapImage _url;
public Components(IDataRecord record)
{
_componentID = (int)record["id"];
_name = (string)record["name"];
_url = (string)record["url"];
//Code taken from a tutorial used to convert the url into BitmapImage
CreatePhoto((byte[])record["url"]);
}
void CreatePhoto(byte[] photoSource)
{
_url = new System.Windows.Media.Imaging.BitmapImage();
System.IO.MemoryStream strm = new System.IO.MemoryStream();
int offset = 78;
strm.Write(photoSource, offset, photoSource.Length - offset);
// Read the image into the bitmap object
_url.BeginInit();
_url.StreamSource = strm;
_url.EndInit();
}
public int ComponentID
{
get { return _componentID; }
}
public string Name
{
get { return _name; }
}
public BitmapImage Photo
{
get { return _url; }
}
}
}
В словаре ресурсов в XAML у меня есть Изображения управления. Источник изображения жестко закодирован; но мне нужно получить его из базы данных.
Заранее благодарим за любую помощь. Код - это беспорядок, и я уверен, что есть простой способ получить URL-адреса изображений из базы данных и отобразить их в словарь ресурсов.
Что вы подразумеваете под этим именем? –
Кажется, я прокомментировал неправильный пост. У меня есть словарь ресурсов в XAML:<Изображение IsHitTestVisible = "False" Stretch = "Fill" ToolTip = "Ядерный" Источник = "Library/image2.png" /><Изображение IsHitTestVisible = "False" Stretch = " Fill "ToolTip =" Plus "Source =" Library/image1.png "/> ResourceDictionary> Как вы можете видеть,« URL-адреса »жестко закодированы. Мне нужна привязка здесь. –
EVA