DynamicEditorButton.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System.Collections.Generic;
  2. using System.Windows.Controls;
  3. using System.Windows.Media.Imaging;
  4. using static InABox.DynamicGrid.DynamicEditorButton;
  5. namespace InABox.DynamicGrid
  6. {
  7. public class DynamicEditorButton
  8. {
  9. public delegate void ClickHandler(object sender, object? item);
  10. public delegate void ClickHandler<T>(object sender, T item);
  11. public DynamicEditorButton(string name, BitmapImage? image, object? item, ClickHandler onclick)
  12. {
  13. Name = name;
  14. OnClick = onclick;
  15. Item = item;
  16. Image = image;
  17. }
  18. public string Name { get; set; }
  19. public object? Item { get; set; }
  20. public BitmapImage? Image { get; set; }
  21. public Button Button { get; set; }
  22. public object Form { get; set; }
  23. public event ClickHandler OnClick;
  24. public void Click()
  25. {
  26. OnClick?.Invoke(Form, Item);
  27. }
  28. }
  29. public class DynamicEditorButtons : List<DynamicEditorButton>
  30. {
  31. public DynamicEditorButton Add(string name, BitmapImage? image, object? item, ClickHandler onclick)
  32. {
  33. var editorbutton = new DynamicEditorButton(name, image, item, onclick);
  34. Add(editorbutton);
  35. return editorbutton;
  36. }
  37. public DynamicEditorButton Add<T>(string name, BitmapImage? image, T item, ClickHandler<T> onClick)
  38. {
  39. var editorbutton = new DynamicEditorButton(name, image, item, (o, e) => onClick(o, (T)e));
  40. Add(editorbutton);
  41. return editorbutton;
  42. }
  43. }
  44. }