123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using InABox.Core;
- using InABox.WPF;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Media.Imaging;
- namespace InABox.DynamicGrid;
- public class DynamicSelectorGrid<T> : DynamicDataGrid<T>
- where T : Entity, IRemotable, IPersistent, new()
- {
- private static BitmapImage tick = InABox.Wpf.Resources.tick.AsBitmapImage();
- public HashSet<Guid> SelectedIDs { get; set; } = new();
- public delegate void SelectionChangedEvent(HashSet<Guid> selected);
- public event SelectionChangedEvent? SelectionChanged;
- public DynamicSelectorGrid(DynamicActionColumnPosition tickPosition)
- {
- ActionColumns.Add(new DynamicImageColumn(Selected_Image, Selected_Click)
- {
- Position = tickPosition
- });
- }
- private BitmapImage? Selected_Image(CoreRow? row)
- {
- if (row is null) return tick;
- return SelectedIDs.Contains(row.Get<T, Guid>(x => x.ID)) ? tick : null;
- }
- private bool Selected_Click(CoreRow? row)
- {
- if (row is null) return false;
- var id = row.Get<T, Guid>(x => x.ID);
- if (SelectedIDs.Contains(id))
- {
- SelectedIDs.Remove(id);
- }
- else
- {
- SelectedIDs.Add(id);
- }
- SelectionChanged?.Invoke(SelectedIDs);
- InvalidateRow(row);
- return false;
- }
- protected override void DoReconfigure(FluentList<DynamicGridOption> options)
- {
- base.DoReconfigure(options);
- options.Clear();
- }
- }
|