Laden...

Bindung einer Liste von BitmapSource mittels xaml auf WPf

Erstellt von ehirsch vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.224 Views
E
ehirsch Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren
Bindung einer Liste von BitmapSource mittels xaml auf WPf

Hallo alle zusammen!

Ich habe das Forum durchsucht, habe aber dieses "Problem" leider nicht gefunden 😦
Ganz kurz die Problematik: Ich lese aus einer Datenbank Bilder aus. Natürlich sind das nicht immer gleich viel. Ich wandle dieses erhaltene byte-Array in ein BitmapSource um und erstelle dabei eine Liste. So, nun das Problem: Wie bekomme ich nun diese Bilder auf die Oberfläche. Dies sollten so eine Art von Vorschaubildern sein. Der Idealfall wäre es, wenn dies jeweils auf einem Button liegen könnten, damit ich, wenn ich eines anklicke, sich in einem neuen Fenster dieses Bild öffnet und dann Informationen dazu anzeigt. So, aber mein Hauptproblem, wie kann ich diese BitmapSource-Liste dynamisch binden. Hier mal der Code der Cs-Datei:


namespace BildvonMysqlaufOberflaeche
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MySqlConnection connection;
        public MySqlCommand command;
        public MySqlDataReader reader;
        public List<BitmapSource> ListSource { get; set; }
        string myConnectionString = "Server=localhost;" + "Database=register;" + "UID=root;" + "Password=test;";

        public MainWindow()
        {
            InitializeComponent();
            ListSource = new List<BitmapSource>();
            using (connection = new MySqlConnection(myConnectionString))
            {
                connection.Open();
                command = new MySqlCommand();
                command.Connection = connection;
                command.CommandText="select Picture from nature";
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    byte[] imageByte = (byte[])reader["Picture"];
                    ListSource.Add(byte2image(imageByte));
                }
            }
            
            DataContext = this;
        }

        private BitmapSource byte2image(byte[] imageByte)
        {
            using (MemoryStream imageStream = new MemoryStream(imageByte))
            {
                BitmapDecoder decoder = BitmapDecoder.Create(imageStream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
                return decoder.Frames[0];
            }
        }
    }
}
2.207 Beiträge seit 2011
vor 9 Jahren

Hallo ehirsch,

benutze das MVVM-Pattern und dann bindest du einfach deine Liste an deinen gewünschten Container im UI. Wenn du schon BitmapImages hast kannst du die an das Source-Property im Image-Objekt einfach einbinden.

Gruss

Coffeebean