using InABox.Clients; using InABox.Core; using InABox.WPF; using Org.BouncyCastle.Crmf; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; namespace InABox.DynamicGrid { public class DFImageControl : DynamicFormControl { private static readonly Dictionary images = new(); protected override FrameworkElement Create() { var image = new Image(); if (Control.Image.IsValid()) { if (images.ContainsKey(Control.Image.ID)) image.Source = images[Control.Image.ID]; new Client().Query( new Filter(x => x.ID).IsEqualTo(Control.Image.ID), new Columns(x => x.ID, x => x.Data), null, (data, error) => { var bytes = data?.Rows.FirstOrDefault()?.Get(x => x.Data); var source = new BitmapImage(); source.LoadImage(bytes); images[Control.Image.ID] = source; Dispatcher.Invoke(() => { image.Source = source; }); } ); } image.Stretch = Stretch.Uniform; return image; } } }