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;
- }
- }
- }
|