| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 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<DFLayoutImage>    {        private static readonly Dictionary<Guid, BitmapImage> 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<Document>().Query(                    new Filter<Document>(x => x.ID).IsEqualTo(Control.Image.ID),                    new Columns<Document>(x => x.ID, x => x.Data),                    null,                    (data, error) =>                    {                        var bytes = data?.Rows.FirstOrDefault()?.Get<Document, byte[]>(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;        }    }}
 |